2

我有一个数据框,我想在其中找到(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。

有人可以建议如何做到这一点吗?

谢谢。

4

1 回答 1

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
于 2013-08-12T09:32:27.870 回答