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

R 如何在同一数据集中的新列中添加列的前几行?,r,R,我使用此代码生成了两列“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”中 我什么都试过了,一点运气都没有。使用累积和函数cumsum data$z <- cumsum(data$y) data$z可能不是最干净的方式,但这很容易理解,而且效果很好: data$z=NA for

我使用此代码生成了两列“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”中


我什么都试过了,一点运气都没有。

使用累积和函数
cumsum

data$z <- cumsum(data$y)

data$z可能不是最干净的方式,但这很容易理解,而且效果很好:

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

“y的前几行”是什么?它们来自哪里?我不明白你想做什么。所有最上面的行'data$z=cumsum(data$y)'我更喜欢Nathan的答案。用那个。
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']
  }
}