如何在R的每日测量数据框中新增列计算当日与昨日测量值差值?
计算R中每日测量值的增减量
要实现给你的data frame新增increase列,计算当日测量值相对昨日的变化量,有几种简单直接的方法:
方法1:使用dplyr的lag()函数(推荐)
这是最简洁直观的方式,lag()函数会将目标列向下偏移一行,正好对应"昨日"的值:
library(dplyr) DF2 <- DF %>% mutate(increase = measurement - lag(measurement))
方法2:基础R实现(无需额外包)
如果不想加载dplyr,可以用基础R的索引或diff()函数:
方式A:用diff()函数
diff()直接计算相邻元素的差值,给结果前补NA即可匹配原数据行数:
DF$increase <- c(NA, diff(DF$measurement))
方式B:手动索引计算
通过取除最后一行外的测量值,前面补NA后与原列相减:
DF$increase <- DF$measurement - c(NA, DF$measurement[-nrow(DF)])
验证结果
用你提供的示例数据测试:
# 构建示例数据 DF <- tibble::tibble(measurement = c(1,2,3,5,7,10))
运行上述任意一种方法后,都会得到你期望的结果:
# A tibble: 6 × 2 measurement increase <dbl> <dbl> 1 1 NA 2 2 1 3 3 1 4 5 2 5 7 2 6 10 3
内容的提问来源于stack exchange,提问作者Der Gerät
相关产品推荐
相关产品推荐

