R 在具有多个值的列值中匹配字符串
请帮我做这个 我有一个如下的数据表R 在具有多个值的列值中匹配字符串,r,data.table,R,Data.table,请帮我做这个 我有一个如下的数据表 dt2 <- data.table(ID = c(1,1,2,2,3,3,4,4,4), variable = c("a","b","a","c","c","d","e","b","a")) dt3 <- dt2[, list(variables = paste(variable, collapse = " | ")), by = ID] dt3[,chk:=sample(letters[1:2])] dt3
dt2 <- data.table(ID = c(1,1,2,2,3,3,4,4,4), variable = c("a","b","a","c","c","d","e","b","a"))
dt3 <- dt2[, list(variables = paste(variable, collapse = " | ")), by = ID]
dt3[,chk:=sample(letters[1:2])]
dt3
ID variables chk
1: 1 a | b b
2: 2 a | c a
3: 3 c | d b
4: 4 e | b | a a
dt2这里有一种mapply
方法。它在操作中逐元素获取两个参数:
dt3[mapply(grepl, x=variables, chk)]
# ID variables chk
#1: 1 a | b b
#2: 2 a | c a
#3: 4 e | b | a a
这里有一种mapply
方法。它在操作中逐元素获取两个参数:
dt3[mapply(grepl, x=variables, chk)]
# ID variables chk
#1: 1 a | b b
#2: 2 a | c a
#3: 4 e | b | a a
我们可以使用paste
和grep
dt3[with(dt3, grep(paste(chk, collapse='|'), variables)),]
# ID variables chk
#1: 1 a | b a
#2: 2 a | c b
#3: 4 e | b | a b
我们可以使用paste
和grep
dt3[with(dt3, grep(paste(chk, collapse='|'), variables)),]
# ID variables chk
#1: 1 a | b a
#2: 2 a | c b
#3: 4 e | b | a b
很有魅力!!谢谢你的魅力!!谢谢