R函数使用相同和不同列中的先前行?

时间:2019-04-18 15:44:34

标签: r

从虹膜数据集开始:

我想创建一个新的B列,其中第1行的值是Sepal.Length的值,第2行的值是前一行的B +(当前行的Separ.length-Sepal .length(上一行的长度)。 因此,B1 = 5.1,B2 = 5.1 +(4.9-5.1 ...

谢谢!

edit:上述模式只是部分的:该公式仅在以下情况下适用:(当前行的Sepal.length-前一行的Sepal.length)。根据总督的回答,以下代码适用于已编辑的问题:

MyDataSet<-data.frame(time=c(1,2,3,1,2,3)) 
B <- rep(NA,(nrow(MyDataSet))) 
B[1] <- MyDataSet$time[1] 

for (i in 2:nrow(MyDataSet)) { 
if (0<MyDataSet$time[i]-MyDataSet$time[i-1])
{B[i] <- B[i-1]+(MyDataSet$time[i]-MyDataSet$time[i-1]) }  
 else {B[i]<-B[i-1]+MyDataSet$time[i]} 
} 

MyDataSet$B <- B

1 个答案:

答案 0 :(得分:1)

这应该有效:

data(iris)

B <- rep(NA, (nrow(iris)))
B[1] <- iris$Sepal.Length[1]
for ( i in 2:nrow(iris)){
  B[i] <- B[i-1]+(iris$Sepal.Length[i]-iris$Sepal.Length[i-1])  
}

@Lina Bird,您是对的,我忘了添加

iris$B <- B

请注意,使用dplyr软件包和mutate函数可以更优雅/更有效地实现此目的。