在包含由空格分隔的数字的字符向量中查找数字模式

时间:2016-04-15 06:39:49

标签: regex r stringr

我有一个数据框,其中包含一个包含由空格分隔的代码的列。 我想通过应用“<”来搜索这些ID或“>”等算术运算符。

输入数据框:

df <- data.frame(Id=c(101, 102,103), Codes=c("1 2 3", "2 4 5", "4 5"))

我尝试找到代码大于3的id。 所以我可以得到102和103作为输出。

df[df$Codes > "3", ]

但这给了我103个身份证。 我错过了什么?

1 个答案:

答案 0 :(得分:2)

我们可以尝试

df[sapply(strsplit(as.character(df$Codes), "\\s+"), function(x) any(as.numeric(x)>3)), ]
#   Id Codes
#2 102 2 4 5
#3 103   4 5

或使用grep

df[grep("[4-9]", df$Codes),] 
#   Id Codes
#2 102 2 4 5
#3 103   4 5

如果我们只需要“Id”

df$Id[grep("[4-9]", df$Codes)] 
#[1] 102 103