我有一个数据框,其中包含一个包含由空格分隔的代码的列。 我想通过应用“<”来搜索这些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个身份证。 我错过了什么?
答案 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