R脚本 - 获得平均值

时间:2011-09-17 01:20:43

标签: r average

我有两个清单。第一个列表包含有限数量的选项:

a = [1, 1.5, 2, 2.5, 2, 2.5, 1, 1.5, 1, 2.5]

然后我有另一个有整数的列表

b = [34, 67, 45, 12, 45, 78, 90, 50, 60, 12]

如您所见,在列表a中,唯一可能的值为1,1.5,2和2.5。另请注意,这两个列表彼此对应。因此,对于第一个元素,1的值为34.

我想平均分别为1,1.5,2和2.5,具体取决于它所具有的值(在b中给出)。

因此,例如,2在位置3中有45,在位置5中有45.因此,平均值为45。

我怎样才能在R中做到这一点?

2 个答案:

答案 0 :(得分:2)

我认为ab实际上是数字向量而不是列表 - 如果不是,unlist它们就是这样。

a <- c(1, 1.5, 2, 2.5, 2, 2.5, 1, 1.5, 1, 2.5)
b <- c(34, 67, 45, 12, 45, 78, 90, 50, 60, 12)
tapply(b,a,mean)

结果:

       1      1.5        2      2.5 
61.33333 58.50000 45.00000 34.00000 

答案 1 :(得分:1)

另外两个选项,一个来自基础R,另一个来自plyr

> aggregate(b, list(a), mean)
  Group.1        x
1     1.0 61.33333
2     1.5 58.50000
3     2.0 45.00000
4     2.5 34.00000
> library(plyr)
> ddply(data.frame(a,b), "a", summarize, meanval = mean(b))
    a  meanval
1 1.0 61.33333
2 1.5 58.50000
3 2.0 45.00000
4 2.5 34.00000