使用dplyr按组计算均值结果异常,求解决方法
解决dplyr按组计算均值时分组失效的问题
这个问题我之前也碰到过,根源在于你在group_by()里用了Data$CodeProject这种外部引用方式,导致dplyr没法正确识别分组逻辑,最终计算出的是整个数据集的均值,而不是每组的均值。
问题原因
当你在管道(%>%)里写Data$CodeProject时,你是直接引用了原始数据框的整列,而不是管道传递过来的、已经被分组处理的数据子集。这就相当于告诉dplyr:"别管管道里的分组,直接用整个数据的CodeProject列",所以summarize里的mean(Price)计算的是所有Price的平均值((3+4+5+6+9)/5 = 5.4),自然每个组的结果都一样。
修正后的代码
你只需要去掉group_by()里的Data$前缀,直接使用列名即可:
library(dplyr) Data %>% group_by(CodeProject) %>% summarize( n = n(), mean_pr = mean(Price, na.rm = TRUE) )
预期输出
运行上面的代码后,你会得到正确的分组均值结果:
# A tibble: 2 × 3 CodeProject n mean_pr <chr> <int> <dbl> 1 Pr1 3 4 2 Pr2 2 7.5
内容的提问来源于stack exchange,提问作者Layale
相关产品推荐
相关产品推荐

