如何按一列分组并获取其他列的平均值

时间:2019-04-23 03:53:34

标签: r

enter image description here

aggregate(。〜station,data2017 [-14],平均值(na.rm = TRUE)) 为什么我的命令不起作用?

1 个答案:

答案 0 :(得分:0)

我们需要从()中删除mean或使用匿名函数,然后使用function(x) mean(x, na.rm = TRUE)。如果我们不想使用匿名函数,请指定参数和该参数的值

aggregate(. ~ station, data2017[-14], mean, na.rm = TRUE, na.action = na.pass) 

注意:在这里,由于列中有NA元素,我们可能还需要na.action。默认情况下,如果其中一行中有任何NA,则可以删除NA行


作为可重现的示例,我们可以使用mtcars数据集

data(mtcars)
mtcars[3:4, 2] <- NA # assigning some NA
mtcars[10, 5] <- NA
aggregate(. ~ gear, mtcars, mean(na.rm = TRUE))
  

mean.default(na.rm = TRUE)错误:缺少参数“ x”,带有   没有默认值

aggregate(. ~ gear, mtcars, mean, na.rm = TRUE)
#  gear      mpg      cyl     disp       hp     drat     wt     qsec        vs  am     carb
#1    3 15.72857 7.571429 331.1786 180.8571 3.136429 3.9410 17.56714 0.1428571 0.0 2.785714
#2    4 25.24000 4.600000 120.0600  85.8000 4.075000 2.5640 19.06700 0.8000000 0.7 2.300000
#3    5 21.38000 6.000000 202.4800 195.6000 3.916000 2.6326 15.64000 0.2000000 1.0 4.400000

aggregate(. ~ gear, mtcars, mean, na.rm = TRUE, na.action = na.pass)
#  gear      mpg      cyl     disp       hp     drat       wt   qsec        vs        am     carb
#1    3 16.10667 7.571429 326.3000 176.1333 3.132667 3.892600 17.692 0.2000000 0.0000000 2.666667
#2    4 24.53333 4.727273 123.0167  89.5000 4.054545 2.616667 18.965 0.8333333 0.6666667 2.333333
#3    5 21.38000 6.000000 202.4800 195.6000 3.916000 2.632600 15.640 0.2000000 1.0000000 4.400000

请注意,当我们添加mean时,na.action值的差异