可能重复:
faster way to create variable that aggregates a column by id
所以问题是我从CSV文件中加载了以下数据:
id value2 value3
1.000 0.010 14
1.000 0.019 15
0.995 0.024 13
0.995 0.031 20
0.990 0.012 13
.....
我想计算value2
组value3
和id
的平均值/中位数等值。之后计划就是能够按value2
或value3
对结果进行排序。
有办法做这样的任务吗?
提前致谢。
答案 0 :(得分:6)
这是data.table星期天!这样可以很好地扩展大数据 - 快速高效。
> library(data.table)
> DT <- as.data.table(df)
> DT[, list(val2=mean(value2), val3=mean(value3)), by=id]
id val2 val3
1: 1.000 0.0145 14.5
2: 0.995 0.0275 16.5
3: 0.990 0.0120 13.0
答案 1 :(得分:3)
library(plyr)
result <- ddply(df, .(id), function(x) {
data.frame(mv2 = mean(x$value2), mv3 = mean(x$value3))
})
# order by mean value2
arrange(result, mv2)
# and for value 3
arrange(result, mv3)
答案 2 :(得分:0)
假设您拥有名为df
的数据框中的数据,您可以执行以下操作:
sapply(split(df[-1], df$id), sapply, mean)