У меня есть 2 фрейма данных:
data1 <- data.frame(names = c("ALBERT | ALBERTIS 2",
"PIERRE | JEAN | ALBERT",
"ALBERTOS"))
data2 <- data.frame(names_search = c("ALBERT", "PIERRE"))
Я хочу знать, что каждое целое СЛОВО data2
присутствует в data1
. Новый столбец в data1
будет содержать совпадающие элементы. Поэтому я хочу получить такой результат, как:
data3 <- data.frame(names = c("ALBERT | ALBERTOS | ALBERT 2",
"ALBERT | ALBERTOS | ALBE 2",
"PIERRE | PIERRE 2 | PIERRE_SECOND | PIERRE_SECOND 2"),
names_search = c("ALBERT", "ALBERT | PIERRE", ""))
У вас есть идеи, как это сделать?
Я пробовал это в два раза l oop (надеюсь, вы можете дать лучший способ) но это не удалось.
for( i in 1:nrow(data1)){
result <- ""
for(j in 1: nrow(data2)){
present <- grepl(eval(parse(text = paste0('\\<',data2$names_search[j],'\\>'))), data1$names[i], fixed = T)
# I check if the whole word data[j] is present in data1[i]
if(present ==T){
result <- paste(result, data2$names_search[j], sep= "|")
}
}
data1$names_search[i] <- result
}