0

可能重复:
创建按 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        
.....

我想计算value2value3的组的平均值/中值等id。之后的计划是能够按value2或对结果进行排序value3

有没有办法完成这样的任务?

提前致谢。

4

3 回答 3

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
于 2012-10-14T20:41:51.043 回答
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)
于 2012-10-14T20:38:41.580 回答
0

假设您在名为的数据框中有数据,df您可以执行以下操作:

sapply(split(df[-1], df$id), sapply, mean)
于 2012-10-14T20:38:21.260 回答