我想在数据框中创建一个与列表变量中的值对应的新列。
我的数据框包含许多带有“产品名称”列的行。我的目的是创建一个新列,允许我将产品分类。
示例代码 -
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)
我希望这能说明我正在做的事情。通过创建列表,我基本上得到了产品及其类别的注册,这些注册可能会随着时间的推移而发生变化。
使用清单是否有解决方案,或者我是否过于复杂而没有看到树木?
编辑 - 可能有助于让您知道我正在使用100种产品。
答案 0 :(得分:4)
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