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

finding numeric pattern in character vector containing numeric digits separated by space

我得到了一个数据框,其中有一列包含由 space 分隔的代码。 我想通过应用“<”或“>”等算术运算符来搜索这些 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 id。 我缺少什么??

我们可以试试

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