【发布时间】:2017-03-09 09:44:49
【问题描述】:
我正在寻找一种在基于附加列的 ifelse 语句中进行滚动乘积的方法?
我的数据是这样的
A B C
1 1 1
2 3 1
3 5 0
4 7 0
等价的excel公式是
C3 = IF(B3=0,(1+A3/10)*C2,1)
我尝试过使用
ifelse(B==0,cumprod(c(1,(A[-1]/10+1))),1)
我无法让它在这种情况下工作,因为它总是只引用 A 列中的数据。
我希望得到以下结果
A B C
1 1 1 1
2 3 1 1
3 5 0 1.5
4 7 0 2.55
提前致谢
【问题讨论】:
-
你写了
elseif -
...大概你的意思是
ifelse()。 -
您能否以可重复的方式共享您的数据(例如,与
dput)?每列中的行数不相等意味着您没有数据框或矩阵,因此很高兴看到有什么结构。它们只是向量吗? -
我的代码中有 elseif,数据看起来像示例,我开始时 C 列为空,我只是将起始值放入,因为它们将在不使用 ifelse 的情况下获得分配的 1滚动产品
标签: r cumulative-sum