检测具有多个条件的字符串并在r中变异列

检测具有多个条件的字符串并在r中变异列,r,string,dataframe,R,String,Dataframe,我有Lookup_DF,其中包含引用字符串的字典和包含字符串组合的原始文件,Lookup_DF有基于原始文件中的项填充到结果数据框中的类型 Item1=c("Banana","Toamto","Potato","Palak") Item2=c("","Orange","Onion","Mango") Type1=c("Fruit

我有Lookup_DF,其中包含引用字符串的字典和包含字符串组合的原始文件,Lookup_DF有基于原始文件中的项填充到结果数据框中的类型

Item1=c("Banana","Toamto","Potato","Palak")
Item2=c("","Orange","Onion","Mango")
Type1=c("Fruit","Vegetable","Vegetable","Leaves")
Type2=c("","Fruit","Vegetable","Fruit")

DF1=data.frame(Item1,Item2,Type1,Type2)

Items=c("Onion,Potato,Ginger","Tomato","Banana","Palak,Mango","Onion,Capsicum","Orange,Sweet_potato")

Raw_file=data.frame(Items)

Result_Type1=c("Vegetable","Vegetable","Fruit","Leaves","","")
Result_Type2=c("Vegetable","","","Fruit","Vegetable","Fruit")
Result=data.frame(Items,Result_Type1,Result_Type2)
我的输出数据框看起来像结果。
我在case语句中尝试了str_detect,但没有得到它。有人能帮我一下吗。

也许你可以在这两个表之间进行连接(类似于你的表)

首先将把
DF1
放在长格式中。对于
Raw_文件
,使用
separate_rows
在联接前的每一行中都有一个项目

library(tidyverse)

DF1_long <- DF1 %>%
  pivot_longer(cols = everything(), 
               names_to = c(".value", "number"), 
               names_pattern = "(\\w+)(\\d+)$")

Raw_file %>%
  mutate(value = Items) %>%
  separate_rows(value) %>%
  inner_join(DF1_long, by = c("value" = "Item")) %>%
  group_by(Items) %>%
  distinct(Items, number, .keep_all = TRUE) %>%
  pivot_wider(id_cols = Items, 
              names_from = number, 
              values_from = Type, 
              names_prefix = "Result_Type")
库(tidyverse)
DF1_长%
pivot_更长(cols=everything(),
名称_to=c(“.value”,“number”),
名称\u模式=“(\\w+)(\\d+$”)
原始文件%>%
变异(值=项目)%>%
单独的_行(值)%>%
内部联接(DF1长,由=c(“值”=“项”))%>%
分组依据(项目)%>%
不同(项目、编号、.keep_all=TRUE)%>%
枢轴(id\U cols=项目,
name_from=编号,
值\u from=类型,
名称\前缀=“结果\类型”)
输出

  Items               Result_Type2 Result_Type1
  <chr>               <chr>        <chr>       
1 Onion,Potato,Ginger Vegetable    Vegetable   
2 Tomato              NA           Vegetable   
3 Banana              NA           Fruit       
4 Palak,Mango         Fruit        Leaves      
5 Onion,Capsicum      Vegetable    NA          
6 Orange,Sweet_potato Fruit        NA    
项目结果类型2结果类型1
1洋葱、土豆、姜类蔬菜
2西红柿和蔬菜
香蕉和水果
4帕拉克,芒果果叶
5洋葱、辣椒、蔬菜钠
6橘子、红薯、水果