У меня есть фрейм данных с приведенными ниже столбцами:
country<- c("CA","IN","US")
text <- c("paint red green", "painting red", "painting blue")
word <- c("green, red, blue", "red", "red, blue")
df <- data.frame(country, text, word)
Для каждой строки я хочу найти слова в столбце слов внутри текста в текстовом столбце и представить их в новом столбце, поэтому в тексте будут показаны найденные слова, разделенные запятой. поэтому новый столбец должен выглядеть так:
df$new_col <- c("green,red","red","blue")
Я использую эти строки кода, но для запуска и даже свертывания требуется много времени.
setDT(df)[, new_col:= paste(df$word[unlist(lapply(df$word,function(x) grepl(x, df$text,
ignore.case = T)))], collapse = ","), by = 1:nrow(df)]
Есть ли способ изменить код, чтобы он был более эффективным?
Большое спасибо!