我想对columnvalue进行后续的行求和,并将结果放入一个新的columnvariable,而不会删除任何另一列值。
下面是一些R代码和一个可以解决这个问题的例子,希望能够说明我的问题。我想知道是否有更优雅的方法,因为for循环在我的实际对象中会耗费时间。
感谢您的反馈。
作为示例数据框:
MyDf <- data.frame(ID = c(1,1,1,2,2,2), Y = 1:6)
MyDf$FIRST <- c(1,0,0,1,0,0)
MyDf.2 <- MyDf
MyDf.2$Y2 <- c(1,3,6,4,9,15)
这样做的目的是让我可以编写代码,分别在Y2
中为每个ID计算MyDf.2
。
这就是我想出来的,它就是诀窍。 (计算TEST
中必须等于MyDf
cin Y2
的{{1}}列
MyDf.2
答案 0 :(得分:2)
您需要ave
和cumsum
才能获得所需的列。 transform
只是为了修改您现有的data.frame。
> MyDf <- transform(MyDf, TEST=ave(Y, ID, FUN=cumsum))
ID Y FIRST TEST
1 1 1 1 1
2 1 2 0 3
3 1 3 0 6
4 2 4 1 4
5 2 5 0 9
6 2 6 0 15