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

Phl*_*das 2 aggregate r dataframe

这是我的数据:

  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
Run Code Online (Sandbox Code Playgroud)

如何通过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)
Run Code Online (Sandbox Code Playgroud)

A5C*_*2T1 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 
Run Code Online (Sandbox Code Playgroud)