举一个简单的例子,我需要创建下表中的R列的递推更新(这是我想要的结果):data.table
library(data.table)
DT <- data.table(A= c(2,5,4,-2,4),
B= c(1000,1100,1375,1650,1485),
C= c(50,55,68.75,82.5,74.25),
D= c(100,275,275,-165,297))
DT
这是我的尝试,到目前为止这是不工作:
DT.2 <- data.table(A= c(2,5,4,-2,4))
DT.2[, B := 1000 ] # B should begin at 1000, then cumulatively add column D
DT.2[, C := B * 0.05 ]
DT.2[, D := A * C ]
DT.2[, B := 1000 + cumsum(shift(D, type= "lag", fill=FALSE)) ]
DT.2
正如您所看到的,列不会正确更新,因为每列都依赖于其他列的结果。在Excel中这是一个非常简单的计算,我只需要了解如何使其适应R. 谢谢
这是奇怪的递归 - 你初始化'B'为'1000'。那么'C'依赖于'B','D'依赖于'C',并且'B'被重新定义为依赖于'D'。似乎通告。 – Gregor
你能解释一下如何获得你想要的结果(即应用了什么变换)? – fishtank
我在Excel中创建了这个例子。 B列从1000开始,然后依靠其他列的结果。我可以想象它需要一个循环函数或应用系列,但是我无法做到这一点。 – user3740289