通过 R 中的多个列变量平均行

Averaging rows by multiple column variables in R

我正在尝试为我的数据创建一个多条形图,使用 ggplot2 描述每个区域的 avgct 均值和误差条。

这是我的数据示例:

gregion lregion   avgct
1          e      1.146
1          e      0.947
2          e      0.908    
3          e      1.167
1          t      1.225   
2          t      1.058
2          t      2.436
3          t      0.679

到目前为止,我已经设法创建了这张图,但它似乎绘制的是 avgct 的最大值而不是平均值,因此我无法创建误差线。

我想我需要通过 gregion 和 lregion 计算 avgct 的平均值,这样我就有了每个区域的 avgct 平均值,如下所示:

gregion lregion   mean(avgct)   
1          e      1.047 
2          e      0.908 
3          e      1.167
1          t      1.225 
2          t      1.747
3          t      0.679

如果有人可以帮助我,以便我可以为我的数据绘制带有误差条的平均值条形图,我们将不胜感激!

这是一个基本的聚合问题,所以典型的起点应该是 aggregate:

> aggregate(avgct ~ gregion + lregion, mydf, mean)
  gregion lregion  avgct
1       1       e 1.0465
2       2       e 0.9080
3       3       e 1.1670
4       1       t 1.2250
5       2       t 1.7470
6       3       t 0.6790

然而,还有一些其他的替代方案,包括 "dplyr" 和 "data.table",它们可能在长 运行 中更有吸引力,因为语法的便利性和整体效率。

library(data.table)
as.data.table(mydf)[, mean(avgct), by = .(gregion, lregion)]


library(dplyr)
mydf %>% group_by(gregion, lregion) %>% summarise(avgct = mean(avgct))