我有以下数据框:
dat <- data.frame(Name = c("John", "Company A pty Ltd", ""), Surname = c("Smith", "", "Company B"), Company = c("Company D", "A Ltd", "Company B"))
我想检查公司列是否包含firstName或Surname中的任何单词。
我使用了以下代码:
dat$clinicOnly <- mapply(grepl, pattern=dat$firstName, dat$Company)
但它检查的是整个字符串是否存在。因此它适用于第一行,但是错过了第二行,并且最后一行是正确的,因为它检测到空白的firstName条目。
如何编写产生FALSE,TRUE,TRUE的函数?
答案 0 :(得分:1)
如何使用intersect
进行努力工作?:
v1 <- strsplit(do.call(paste, dat[1:2]), "\\s+")
v2 <- strsplit(as.character(dat$Company), "\\s+")
mapply(function(x,y) length(intersect(x,y)) > 1, v1, v2)
#[1] FALSE TRUE TRUE