获取id的组中的平均值

时间:2012-10-14 20:31:11

标签: r

  

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

我想计算value2value3id的平均值/中位数等值。之后计划就是能够按value2value3对结果进行排序。

有办法做这样的任务吗?

提前致谢。

3 个答案:

答案 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)