如何获取数据框中每个组的均值

时间:2014-04-07 15:56:52

标签: r dataframe aggregate

这是我的数据:

  v        x
  0:0       96
  0:0      119
  0:0      108
  1:0       73
  1:0       65
  2:0       83
  2:0       73
  2:0       23

如何通过v组获得均值,即所有0:0,1:0等的x均值。

我失败的尝试:

df = read.csv(input.file.path, header=TRUE)
df$v <- as.factor(df$v)
ave(df$x, df$v)

1 个答案:

答案 0 :(得分:5)

ave不是这里最好的选择。它会返回一个与输入长度相同的向量,而我猜测你想将结果整合到一个更紧凑的表中。

如果是这种情况,请尝试aggregatetapply

> aggregate(x ~ v, df, mean)
    v         x
1 0:0 107.66667
2 1:0  69.00000
3 2:0  59.66667

> tapply(df$x, df$v, mean)
      0:0       1:0       2:0 
107.66667  69.00000  59.66667