在包含由 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
我得到了一个数据框,其中有一列包含由 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