【发布时间】:2019-04-27 18:26:07
【问题描述】:
我正在尝试使用 grep 过滤我的数据,但也在结果中包含 NA,目前由于它们与 grep 表达式不匹配而被删除。
platform x86_64-w64-mingw32
version.string R version 3.5.3 (2019-03-11)
样本数据
value expected_result actual_result
1 10001 Pass Pass
2 0 Pass Pass
3 6 Pass Pass
4 20004 Pass Pass
5 NA Pass Fail
6 4829 Fail Fail
7 521 Fail Fail
8 89 Fail Fail
9 40012 Fail Fail
10 47321 Fail Fail
代码
df <- df[grep("(\\b\\d{1}\\b)|([0-9]{1}[0]{3}[0-9]{1})", df$value),]
逻辑规则
1) 该值将包含 0 到 5 个数字字符。
2) 应该保留的三个值是:
a) 一位数据。 (示例值 2 和 3)
b) 无数据或 NA(示例值 5)
c) 五位数据,但中间三位必须全部为零。 (示例值 1 和 4)
【问题讨论】:
-
试试
df[grepl("(\\b\\d{1}\\b)|([0-9]{1}[0]{3}[0-9]{1})", df$value)|is.na(df$value),]
标签: r