R语言中dplyr的group_by()分组求和出现NA的问题排查
分组求和出现NA的解决办法
- 问题根源:你的
weight列里存在缺失值(NA),sum()函数默认只要分组内有一个NA,就会返回NA,哪怕其他值都是有效的。 - 修正后的代码:给
sum()添加na.rm = TRUE参数,忽略缺失值再计算总和:
totals <- db %>% group_by(category) %>% summarise(kilos = sum(weight, na.rm = TRUE))
- 验证排查:可以先确认缺失值的分布,确认是不是这个原因:
# 统计整个weight列的缺失值总数 sum(is.na(db$weight)) # 按category分组统计每组的缺失值数量 db %>% group_by(category) %>% summarise(na_weight_count = sum(is.na(weight))) - 额外排查方向:如果确认weight列没有NA但还是出问题,检查
category列是否有“隐形分组”——比如同一个类别名称有前后空格、大小写不一致,看起来是同一类实际被分成了不同组:# 查看category的所有唯一值,检查是否有异常 unique(db$category) # 清理category列的空格并统一为小写(按需调整) db <- db %>% mutate( category = stringr::str_trim(category), category = tolower(category) )
内容的提问来源于stack exchange,提问作者LM1995
相关产品推荐
相关产品推荐

