Предполагая, что у вас есть кадр данных для поиска, подобный следующему:
df1 <- data.frame(products = 1:5,
value = c('apple', 'peach', 'carrot', 'tomato', 'pear'))
Мы можем поместить значение, разделенное запятыми, в отдельные строки, а затем объединить с df1
на products
и суммировать value
в одну строку через запятую с toString
.
library(dplyr)
df %>%
mutate(row = row_number()) %>%
tidyr::separate_rows(products, sep = ",", convert = TRUE) %>%
left_join(df1, by = 'products') %>%
group_by(row) %>%
summarise(value = toString(value)) %>%
select(-row)
# A tibble: 5 x 1
# value
# <chr>
#1 apple, carrot, pear
#2 apple, peach
#3 carrot
#4 NA
#5 tomato, pear
data
df <- structure(list(products = structure(c(2L, 1L, 3L, NA, 4L), .Label = c("1,2",
"1,3,5", "3", "4,5"), class = "factor")), class = "data.frame", row.names = c("1",
"2", "3", "4", "5"))