在R Studio中使用group_by按多变量分组求均值遇问题求助
问题
数据表结构如下:
| Site | Replicate | Species | Value A |
|---|---|---|---|
| A | A | A | 1 |
| A | A | B | 2 |
| A | B | A | 3 |
| B | A | A | 3 |
| B | A | B | 4 |
| B | B | B | 6 |
| B | B | C | 2 |
| C | A | A | 5 |
| C | A | B | 6 |
需要按Site与Species的每种组合计算Value A的平均值,尝试使用dplyr编写的代码如下:
mean_valueA=invertebrates%>% group_by(site, species) %>% summarize(mean_val=mean(value A))
但结果仅按Site分组,未考虑Species,且每个分组数值相同,求解决方法。
解决方法
出现问题的核心原因:
- 列名大小写不匹配:数据表列名是
Site、Species,但代码里用了小写的site、species,dplyr对列名大小写敏感,导致分组逻辑未按预期执行。 - 带空格列名未正确引用:
Value A包含空格,直接写value A会被R解析为两个独立对象,无法正确识别目标列。
修正后的代码:
mean_valueA <- invertebrates %>% group_by(Site, Species) %>% summarize(mean_val = mean(`Value A`), .groups = "drop")
.groups = "drop"参数用于计算完成后自动取消分组,避免后续操作因分组残留产生异常。
运行修正代码后,将得到正确的分组平均值:
| Site | Species | mean_val |
|---|---|---|
| A | A | 2 |
| A | B | 2 |
| B | A | 3 |
| B | B | 5 |
| B | C | 2 |
| C | A | 5 |
| C | B | 6 |
内容的提问来源于stack exchange,提问作者capthom_obvious
相关产品推荐
相关产品推荐

