R语言筛选data_grouped中DTPE空行时data_OC返回0行问题求解
问题原因
你DTPE列中的“空值”实际是空字符串"",和R中定义的缺失值NA是完全不同的两种数据状态。is.na()函数仅会对真实的NA值返回TRUE,对空字符串的判断结果全部为FALSE,因此筛选结果行数为0。
你可以执行unique(data_grouped$DTPE)查看列的实际取值,就能确认列中存在""值,无NA值。
正确筛选方案
方案1:直接匹配空字符串筛选
无需修改原数据集,直接判断DTPE是否等于空字符串即可:
data_OC <- subset(data_grouped, DTPE == "")
执行后即可筛选到4条符合要求的行。
方案2:统一空值定义后筛选
如果后续需要统一处理缺失值,建议先把空字符串转为NA,再用is.na()筛选:
library(dplyr) # 把DTPE列的空字符串转为NA data_grouped <- data_grouped %>% mutate(DTPE = na_if(DTPE, "")) # 筛选空值 data_OC <- subset(data_grouped, is.na(DTPE))
内容的提问来源于stack exchange,提问作者Antonio
相关产品推荐
相关产品推荐

