2016-11-18 118 views
1

我是新来的,所以请原谅这样一个基本的问题,但我刚开始R和我一直在问剩下的我难住了一个问题:如何找到另一个变量的每个值的变量的平均值?

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

它是如此基本,所以我有点沮丧,我没有看到在这里做什么....

+1

你可以试试看这里的教程:http://www.r-tutor.com/r-introduction/data-frame'mtcars'是一个包含行和列的对象。我没有看到整个数据集,但是'mpg'是该数据集的一列,我猜想'gear'也是数据集上的一列。 – scrappedcola

回答

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,即第三个参数。

+0

很好的答案,但它可能是一个更清洁的公式接口'聚合(MPG〜齿轮,mtcars,意思)''。 – Barker

+0

在这里编码类的令人沮丧的事情之一是,他们教我们非常基础,并向我们提出有关我们尚未完成的代码的问题。感谢您向我介绍聚合函数!大帮忙! – ROCKaholic

2

使用dplyr

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

非常感谢:) – ROCKaholic

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 
1

或者使用data.table

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