我有2列,使用此代码生成“x”和“y”:
x = 1:8
y = c(2,7,1,3,5,4,1,2)
data = data.frame(x,y)
看起来像这样:
x y
1 2
2 7
3 1
4 3
5 5
6 4
7 1
8 2
现在我想继续将所有前面的“y”行添加到“z”中。
x y z
1 2 2
2 7 9
3 1 10
4 3 13
5 5 18
6 4 22
7 1 23
8 2 25
我没有运气就尝试过所有的东西。
答案 0 :(得分:5)
使用累计和函数cumsum
。
data$z <- cumsum(data$y)
答案 1 :(得分:1)
可能不是最干净的方式,但这很容易理解并且效果很好:
data$z=NA
for(i in 1:nrow(data)){
if(i==1){
data[i,'z']=data[i,'y']
} else{
data[i,'z']=data[i,'y']+data[i-1,'z']
}
}