这是我的数据:
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)
答案 0 :(得分:5)
ave
不是这里最好的选择。它会返回一个与输入长度相同的向量,而我猜测你想将结果整合到一个更紧凑的表中。
如果是这种情况,请尝试aggregate
或tapply
:
> 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