R中dplyr按组计算加权平均返回全量结果问题排查
问题成因
- 分组计算失效的核心原因:在
dplyr管道流程的summarise()环节,使用selected_units$"Wtd Avg Price"、selected_units$"Unit Count"的方式引用列,会直接读取原数据框的完整全量列,完全绕过group_by()生成的分组切片规则,因此每次计算都是基于全量数据,最终只能得到整个数据集的加权平均结果,无法输出分组计算值。 - 关于「不显式指定数据框名就无返回结果」的现象:标准
dplyr管道逻辑下,分组计算阶段会自动将当前分组的子集数据作为运行环境,可直接识别数据框内的列名,不需要额外加数据框前缀;列名包含空格、特殊符号时,用反引号包裹列名即可正常识别。
修正后代码
unit_averages = selected_units %>% group_by(`Length x Width`, Date) %>% summarise( index_mean = weighted.mean(`Wtd Avg Price`, w = `Unit Count`), .groups = "drop" )
注:
.groups = "drop"参数为可选配置,作用是计算完成后自动解除数据的分组状态,避免后续其他数据处理操作受残留分组逻辑干扰。
内容的提问来源于stack exchange,提问作者learning2cod3
相关产品推荐
相关产品推荐

