使用公式[R]计算表格中的值的均值

时间:2011-07-23 04:56:28

标签: r

我知道像xtabs和table这样的命令允许用户进行交叉制表

例如,以下命令生成一个数据透视表,显示具有相同齿轮数和气缸数的汽车数量。

> xtabs(~cyl+gear, data = mtcars)
   gear
cyl  3  4  5
  4  1  8  2
  6  2  4  1
  8 12  0  2
> 

我们可以扩展公式,以便它可以显示每个垃圾箱中汽车的马力总和

> xtabs(hp~cyl+gear, data = mtcars)
   gear
cyl    3    4    5
  4   97  608  204
  6  215  466  175
  8 2330    0  599
> 

我现在想知道,是否可以计算每个垃圾箱中汽车的马力平均值?例如像xtabs(mean(hp)~cyl+gear, data = mtcars)

这样的东西

4 个答案:

答案 0 :(得分:10)

您可以使用cast

中的reshape在一行中执行此操作
cast(mtcars, cyl ~ gear, value = 'hp', fun = mean)

答案 1 :(得分:7)

我从r-help收到的一个有趣的回应如下:

> attach(mtcars)
> tapply(hp,list(cyl,gear),mean)
         3     4     5
4  97.0000  76.0 102.0
6 107.5000 116.5 175.0
8 194.1667    NA 299.5
> 

答案 2 :(得分:3)

(将我的评论移至回复中,以便我可以更好地编辑它。)

我不确定如何使用xtabs(我以前从未使用过),但是有两种方法可以使用reshape和{{1} }包。

plyr

答案 3 :(得分:0)

另一种计算方法是使用aggregate()函数。虽然输出不是表格的形式。 (通过twitter

> aggregate(hp~cyl+gear,data=mtcars,mean)
  cyl gear       hp
1   4    3  97.0000
2   6    3 107.5000
3   8    3 194.1667
4   4    4  76.0000
5   6    4 116.5000
6   4    5 102.0000
7   6    5 175.0000
8   8    5 299.5000
>