计算R中变量的增量

时间:2012-11-12 16:20:33

标签: r function loops plyr

我必须计算时间间隔(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))

我哪里错了?

1 个答案:

答案 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)