Изменение столбца с совпадением значений списка - PullRequest
0 голосов
/ 10 мая 2018

Я хотел бы создать новый столбец в моем фрейме данных, который соответствует значениям в списке переменных.

Мой фрейм данных содержит много строк со столбцом «названия продуктов». Я намерен создать новый столбец, который позволит мне сортировать товары по категориям.

Пример кода -

library(dplyr)

products <- c('Apple', 'orange', 'pear',
          'carrot', 'cabbage',
          'strawberry', 'blueberry')
df <- data.frame(products)

ls <- list(Fruit = c('Apple', 'orange', 'pear'),
       Veg = c('carrot', 'cabbage'),
       Berry = c('strawberry', 'blueberry'))

test <- df %>%
  mutate(category = products %in% ls)

Надеюсь, это иллюстрирует то, что я пытаюсь сделать. Создав список, я получил список продуктов и их категорий, которые могут со временем меняться.

Есть ли решение этой проблемы с помощью списка, или я слишком усложняю его и не вижу дрова для деревьев?

edit - может помочь сообщить вам, что я работаю с сотнями продуктов.

1 Ответ

0 голосов
/ 10 мая 2018

stack список и затем присоединение к фрейму данных:

df %>% 
    left_join(stack(ls), by = c('products' = 'values')) %>% 
    rename(category = ind)

#    products category
#1      Apple    Fruit
#2     orange    Fruit
#3       pear    Fruit
#4     carrot      Veg
#5    cabbage      Veg
#6 strawberry    Berry
#7  blueberry    Berry
...