通过 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))
我正在尝试为我的数据创建一个多条形图,使用 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))