为何R语言中两种数据框多列聚合方法结果不一致?
两种aggregate聚合方法结果不同的原因
核心差异在于多列聚合与单列独立聚合的NA处理逻辑完全不一样:
- 方法1通过
cbind(total,type1,type2,type3,type4)~pn进行多列聚合时,aggregate会先按pn分组,再对每个分组做行过滤——只要某一行的指定列(total/type1-type4)里有任意一个NA,这一整行就会被排除在所有列的求和计算之外。换句话说,某一行只要有一个列是NA,它的所有列数值都不会参与对应分组的求和。 - 方法2逐列单独调用
aggregate再合并时,每一列的求和都是独立处理的:计算某列的和时,只会跳过该列自身的NA值,同一行其他列的NA不会影响当前列的数值被计入求和。
举个直观的例子:假设某个pn分组里有一行数据是total=20, type1=NA, type2=30,方法1会直接丢弃这整行,所以该分组的total、type1、type2的求和都不会包含这行的数值;但方法2计算total时会把20加进去(不管type1的NA),计算type2时会把30加进去(不管type1的NA),只有type1的求和会跳过这个NA值。
内容的提问来源于stack exchange,提问作者Hoseinbf
相关产品推荐
相关产品推荐

