如何计算R中特定行的平均值?

时间:2013-09-12 13:09:23

标签: r mean

我有一个数据文件,如下例所示,但更大一些

names    num    Y1  Y2
William  1  4.71    7.4
William  2  3.75    8
William  3  4.71    7.9
Katja    1  5.83    8.5
Katja    2  5.17    7.1
Katja    3  6.08    7.4
Aroma    1  4.04    7.5
Aroma    2  5       6.9
Aroma    3  4.3     7.9
...

我必须为Y1和Y2计算每个3个相同名称(第一列)的平均值。然后分别用Y1和Y2的每个名称的平均值制作一个条形图。所以在x轴上我将有名字,在y轴上有平均值。有人可以帮我吗?

2 个答案:

答案 0 :(得分:6)

您也可以使用aggregate。有关详细信息,请参阅?aggregate

> aggregate(.~names, FUN=mean, data=df[, -2])
    names       Y1       Y2
1   Aroma 4.446667 7.433333
2   Katja 5.693333 7.666667
3 William 4.390000 7.766667

Take a look at this post为每个群体采取另一种选择。

对于条形图,使用R base barplot函数,尽管还有其他替代方法,例如ggplot2图形。

barplot(DF[,2], names.arg=DF$names, ylab="mean of Y1", las=1) # for Y1
barplot(DF[,3], names.arg=DF$names, ylab="mean of Y2", las=1) # for Y2

产生:

enter image description here

由于您是R的新手,我建议您阅读An introduction to R,这是您学习R基础知识的良好起点。

答案 1 :(得分:0)

使用sqldf包(假设df是您的表)

library(sqldf)
sqldf("SELECT names, avg(Y1) as mean_Y1, avg(Y2) as mean_Y2 FROM df GROUP BY names")