如何在 R 中执行步长计算

数据挖掘 r
2022-02-14 17:56:42

我有一个消费的费率阶梯计划,我试图用它来合计成本。我有一个看起来像这样的速率工厂:

First 20 Kwh is Free; 
Second 5 Kwh is $.1
    Next 100 Kwh is $.053 
Next 875 Kwh is $.042 
    Over 1000Kwh is $.039

有人可以为我提供一个可行的例子吗,例如consumtpion=625? 如果可能,使用 R 代码计算总成本。

对于我自己的方法,我正在考虑使用循环,但如果帐户很多,则循环将花费太长时间。谁能想到基于向量的方法来计算结果?

2个回答

试试这样一个简单的等式:

max(x20,0)0.1+max(0,x25)(.047)+max(0,x125)(.011)+max(0,x1000)(.003)

这应该使用并逐步完成,最初每超过 20 千瓦时收取 0.1:(x)max(x20,0)0.1

然后,如果大于 20,则在 20 到 25 之间的每 Kwh,它会带走 0.047 (0.1-0.053):xmax(0,x25)(0.047)

然后,如果大于 125,则在 25 到 125 之间的每 Kwh,它会带走 0.011 (0.053-0.042):xmax(0,x125)(0.011)

这是您在 R 中的伪代码的简单实现:

calculate_cost <- function(kwh){
    if(kwh < 20){
        return(0)
    }else{
         kwh <- kwh - 20
    if(kwh <= 5){
        return(kwh * 0.1)
    }else{
        final_cost <- kwh * 0.1
        kwh <- kwh - 5
        if(kwh <= 100){
            return(final_cost + (kwh * 0.053))
        }else{
            final_cost <- final_cost + (kwh * 0.053)
            kwh <- kwh - 100
            if(kwh <= 875){
                return(final_cost + (kwh * 0.042))
            }else{
                final_cost <- final_cost + (kwh * 0.042)
                kwh <- kwh - 875
                return(final_cost + (kwh * 0.039))
                }
            }
        }
    }
}

然后,

> calculate_cost(kwh=625)
[1] 113.3