【发布时间】:2012-11-12 16:20:32
【问题描述】:
我必须计算变量m 在时间间隔(t2-t1)内的增量。
这是我的数据框的虚拟版本:
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$m[i+1] 和df$m[i] 之间的差异填充df$d_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))
我哪里错了?
【问题讨论】:
-
do.breaks我相信来自 lattice。如果这是正确的,那么请将library(lattice)添加到您的代码中,这样人们就不必自己弄清楚了。 -
每个样本中 d_m 的最后一个值你想取什么值?
-
无论如何,在
m中创建一组“中断”可能有更简单的方法。回到问题:df$d_m <- diff(m)不够吗? -
对不起,Dason,没有意识到 do.brakes 来自 lattice,最后一个 d_m 应该是 NA
-
Carl, diff() 很好,但我不能让它在 ddply 中工作。