我必须计算时间间隔(t2-t1)的变量m
的增量。
这是我的数据框的虚拟版本:
df <- expand.grid(m = do.breaks(c(1, 10), 5),
sample = c("A", "B", "C", "D"))
df$t <- rep(1:6, 4, ordered = TRUE)
df$d_m <- NA
我要做的是使用df$d_m[i]
和df$m[i+1]
之间的差异来填充df$m[i]
,
这也必须在每个级别的样本中完成。
所以这是我的尝试,但根本没有成功。
delta_m <- function(m, t){
for(i in 1:length(t)){
df$d_m[i] <- m[i+1] - m[i]
}}
df <- ddply(df, .(sample, t), transform, d_m = delta_m(m, t))
我哪里错了?
答案 0 :(得分:0)
按sample
:
sdf <- split(df, df$sample)
然后应用函数diff()
(在转换中修改d_m
的每个数据框组件内的sdf
。请注意,没有t == 0
以便观察{ {1}}是d_m
:
NA
最后,将各个组件重新组合在一起
sdf <- lapply(sdf, function(x) transform(x, d_m = c(NA, diff(m))))
结果是
df <- do.call(rbind, sdf)