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 :-)
解决方案
您可以使用以下方法避免for
循环rowSums
:
data[-1, "col"] <- rowSums(data[-nrow(data), c("col_A", "col_B")])
推荐阅读
- transfer - 使用 xBee 传输文件(Raspberry Pi 到笔记本电脑)
- python - Google App Engine 在处理信号后终止:term
- visual-studio - Xamarin“generator.exe”无法运行。System.ComponentModel.Win32Exception (0x80004005):文件名或扩展名太长
- python - 在特定位置将值分配给熊猫数据框的问题
- javascript - Google Charts,水平条形图布局问题
- spring-boot - 没有符合条件的 bean 类型预计至少有 1 个有资格作为自动装配候选者的 bean
- java - jenkins k8s部署中的JAVA_OPTS,似乎没有考虑-Xss(栈大小)
- r - 将 XML 文件转换为 R 中的数据框列表
- java - 使用 JAVA 和 apache.pdfbox 设置打印 PDF 的分辨率
- asp.net-core - 为什么用户60分钟后自动注销,使用cookie认证