我有一个数据框,我想在其中找到(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。
有人可以建议怎么做吗?
感谢。
答案 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