首页 > 解决方案 > 根据其他行数据更新行

问题描述

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

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 :-)

标签: r

解决方案


您可以使用以下方法避免for循环rowSums

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


推荐阅读