如何找到另一个变量的每个值的变量的平均值?

时间:2016-11-18 00:58:04

标签: r subset mean

我是新来的,所以请原谅这样一个基本问题,但我刚刚开始使用R而且我被问到一个让我感到难过的问题:

在R,mtcars中使用预先安装的数据集,我应该找到" mpg"的平均值。变量对于"齿轮的每个值"变量。我不确定这意味着什么。我假设我需要使用子集?

它很基本所以我有点沮丧我没看到在这做什么....

4 个答案:

答案 0 :(得分:4)

使用aggregate

aggregate(mtcars$mpg,list(mtcars$gear),mean)
##  Group.1        x
##1       3 16.10667
##2       4 24.53333
##3       5 21.38000

根据文档,请参阅?aggregate

  

将数据拆分为子集,计算每个子集的摘要统计信息,并以方便的形式返回结果。

这里,第一个参数mtcars$mpg是您想要平均的变量,第二个参数是一个分组变量列表,通过它们每个值确定应用函数的x子集,mean,这是第三个参数。

答案 1 :(得分:3)

或使用data.table

library(data.table)
as.data.table(mtcars)[, .(avg_mpg = mean(mpg)), by = gear]

答案 2 :(得分:2)

使用dplyr

library(dplyr)
mtcars %>%
  group_by(gear) %>%
  summarise(avg_mpg = mean(mpg))

答案 3 :(得分:1)

有时从可视化数据开始是有用的:

plot(x = mtcars$gear, y = mtcars$mpg)

enter image description here

我们可以看到gear需要3个值(3,4和5),我们希望找到每个齿轮值的平均mpg值。

我们可以通过子集来完成此操作,如您所示:

mean(subset(mtcars, gear == 3)$mpg)
# [1] 16.10667

但使用base R函数执行此操作的方法是tapply

tapply(mtcars$mpg, mtcars$gear, mean)
#        3        4        5 
# 16.10667 24.53333 21.38000