如何用dplyr筛选出EXPIRATION_DATE为空值的记录?
正确筛选EXPIRATION_DATE为空值行的方法
你报错的核心原因是:在R里不能用== NULL判断数据框列的空值。NULL代表的是不存在的对象,而数据框里的缺失值通常是NA;同时==判断NA会返回NA,filter会自动排除这类行,所以必须用专门的方式处理:
1. 筛选列值为NA的行(最常见的空值场景)
用dplyr的is.na()函数判断缺失值,两种写法任选:
- 推荐的管道式写法:
Input = import("IEL_HS_CA_CAP_F_BI.xlsx", skip=1) Input1 <- Input %>% filter(is.na(EXPIRATION_DATE))
- 不用管道的写法:
Input = import("IEL_HS_CA_CAP_F_BI.xlsx", skip=1) Input1 <- filter(Input, is.na(EXPIRATION_DATE))
注:dplyr的filter中可直接写列名,无需加Input$,代码更简洁。
2. 如果是空字符串("")的情况
若数据里的"空值"是指单元格为空字符串(而非NA),用以下代码筛选:
Input1 <- Input %>% filter(EXPIRATION_DATE == "")
如果需要同时保留NA和空字符串的行,用逻辑或连接:
Input1 <- Input %>% filter(is.na(EXPIRATION_DATE) | EXPIRATION_DATE == "")
内容的提问来源于stack exchange,提问作者Chinmay123
相关产品推荐
相关产品推荐

