R语言分组统计中如何移除NA值?filter()与na.omit均无效
解决建议
- 核心问题:你之前的过滤操作时机错误——分组后再过滤时,NA已经被当作一个分组完成统计了,必须在分组前就移除NA值。
- 精准过滤目标列NA的代码(推荐):
data%>% filter(!is.na(brands_doing_enough)) %>% # 先移除目标列含NA的行 group_by(brands_doing_enough)%>% summarise(Number=n())%>% mutate("Percentage(%)"=Number/sum(Number)*100) # 用sum(Number)替代硬编码112,避免样本数变化导致误差
- 另一种代码方案:
如果数据集中只有brands_doing_enough列存在NA,也可以直接用na.omit()移除所有含NA的行:
data%>% na.omit() %>% group_by(brands_doing_enough)%>% summarise(Number=n())%>% mutate("Percentage(%)"=Number/sum(Number)*100)
- 额外提示:不要硬编码
112作为分母,过滤NA后总有效样本数会变为111,用sum(Number)能自动计算当前有效样本总数,保证百分比结果准确。
内容的提问来源于stack exchange,提问作者ano273
相关产品推荐
相关产品推荐

