如何在同一数据集的新列中添加列的先前行?

时间:2018-02-02 15:44:00

标签: r

我有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

我没有运气就尝试过所有的东西。

2 个答案:

答案 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']
  }
}