R语言group_by分组失效:分组计算化学参数均值仅得单一结果
问题排查与修正方案
嘿,我来帮你看看这段代码为啥没得到预期结果!你的代码里有两个关键问题导致只返回了一个全局均值:
核心问题点
- 分组列名引用错误:你在
group_by里用了单引号'Parameter Name',这会把它当成一个固定的字符串常量,而不是数据框里的列名。所以dplyr根本没按Parameter Name来分组,而是把整个数据集当成了一个组。 - 均值计算用了全局数据:你在
mean()里写daily_SPEC$"Arithmetic Mean",这会直接取原始数据集的整列计算均值,而不是每个分组内的子集数据。这就是为啥结果只有一行全局均值。
修正后的代码
只需要改两个地方:用反引号包裹带空格的列名(dplyr里带空格的列名得这么处理),计算均值时直接用列名(不用加数据集前缀):
Q2 <- daily_SPEC %>% group_by(`Parameter Name`, add = FALSE) %>% summarize(Mean_by_chemical = mean(`Arithmetic Mean`, na.rm = TRUE))
要是你偏好更严谨的列引用方式,也可以用.data代词来明确指定列:
Q2 <- daily_SPEC %>% group_by(.data[["Parameter Name"]], add = FALSE) %>% summarize(Mean_by_chemical = mean(.data[["Arithmetic Mean"]], na.rm = TRUE))
这样修改后,就能正确按每个化学品名称分组,计算对应的均值啦!
内容的提问来源于stack exchange,提问作者user9768042
相关产品推荐
相关产品推荐

