首页 > 解决方案 > 如何用下一个(或数据框同一列中的上一个值)替换行中的当前值?

问题描述

如果之前有人问过这个问题,请提前道歉,但我能找到的只是如何替换 NA;永远不匹配我在这里面临的配置。在这种情况下,我只想用下一行的值替换 0。一个关于如何映射前一行的示例也会有所帮助(尽管我认为它应该非常接近映射下一行)。

下面是一段有效的代码,但在应用于大型数据帧时运行速度非常慢。我在想必须有一个更好的解决方案,也许使用 lapply()。请注意,与此处给出的示例不同,实际数据帧没有任何“分组依据”,因此 dplyr 可能不是一个选项。再次感谢你

iris$ind <- seq_along(iris$Sepal.Length)
iris$ind <- ifelse(iris$ind %% 2 == 0, 0, iris$ind)

for(i in seq_along(iris$ind)){

  ifelse(iris$ind[i] == 0, 
         iris$ind[i] <- iris$ind[i + 1], iris$ind )  

}

标签: r

解决方案


您可以尝试leaddplyr包中使用:

iris$ind <- ifelse(iris$ind == 0,
                   lead(iris$ind, order_by=iris$Sepal.Length),
                   iris$ind)

推荐阅读