在R语言中按值为0或空单元格筛选列的方法求助
筛选数据框中指定列值为0或无数据的行
问题原因
你之前的代码无效,核心问题是:
- 判断缺失值不能用
== NA,因为NA和任何值比较结果都是NA,filter会自动过滤掉结果为NA的行,无法选中缺失值的行; - 如果列是数值型,
grp_mlk == ""的结果全为NA,同样会被过滤,起不到筛选作用。
正确解决方案
根据列的类型选择对应代码:
1. 列是字符型(存在"0"、空字符串""、NA)
demo2122 %>% filter(grp_mlk == "0" | grp_mlk == "" | is.na(grp_mlk))
或者用%in%简化写法:
demo2122 %>% filter(grp_mlk %in% c("0", "") | is.na(grp_mlk))
2. 列是数值型(存在0、NA)
demo2122 %>% filter(grp_mlk == 0 | is.na(grp_mlk))
补充:处理混合类型场景
如果列中同时存在数值0、字符"0"、空字符串和NA,可以先统一转换类型再筛选:
demo2122 %>% mutate(grp_mlk = as.character(grp_mlk)) %>% filter(grp_mlk %in% c("0", "") | is.na(grp_mlk))
内容的提问来源于stack exchange,提问作者Catherine Ticzon
相关产品推荐
相关产品推荐

