根据其他行数据更新行

时间:2019-06-19 22:39:07

标签: r

我很乐意根据其他人的栏值更新栏,如下所示:

data[,"col"] <- data[,"col_A"] + data[,"col_B"]

请注意,上面完成的所有计算均基于同一当前行中的值。 但是,我试图根据上一个行中的值更新列。

for( i in 2:nrow(data)) ){
    data[i,"col"] <- data[i-1,"col_A"] + data[i-1,"col_B"]
}

与第一个命令一样,如何仅使用一个命令而不执行“ for”迭代呢?

谢谢!

编辑1

基于@ r2evans的注释,该注释指向dplyr::lag函数,我可以使用以下代码来解决:

data[,"col"] <- lag(data[,"col_A"]) + lag(data[,"col_B"])

我可以直接处理第一行中发生的NA。 谢谢@ r2evans:-)

1 个答案:

答案 0 :(得分:0)

您可以使用for来避免rowSums循环:

data[-1, "col"] <- rowSums(data[-nrow(data), c("col_A", "col_B")])