R:重复使用长度

时间:2013-08-12 09:15:53

标签: r dataframe aggregate

我有一个数据框,我想在其中找到(x,y)的重用长度。有人可以建议我分析它的最快方法。例如:

df <- data.frame(
  time=c(0,1,2,3,4,5,6),
  x=c(1,4,2,1,6,1,4), 
  y=c(2,5,3,2,7,2,5)
)

我想要相同(x,y)/

重新出现的平均值或中位数

这里,(1,2)在时间0,3,5重复。所以平均值=((3-0)+(5-3))/ 2 = 2.5 (4,5)的平均值为5。

因此,整体平均值为3.75。

有人可以建议怎么做吗?

感谢。

1 个答案:

答案 0 :(得分:2)

也许你正在寻找这样的东西:

out <- aggregate(time ~ x + y, df, function(blah) {
  mean(diff(blah))
})
out
#   x y time
# 1 1 2  2.5
# 2 2 3  NaN
# 3 4 5  5.0
# 4 6 7  NaN
sum(out$time, na.rm=TRUE)
# [1] 7.5

data.table方法:

library(data.table)
DT <- data.table(df, key = "x,y")
DT[, mean(diff(time)), by = key(DT)][, sum(V1, na.rm=TRUE)]
# [1] 7.5