Я пытаюсь использовать str_detect и case_when для перекодирования строк на основе нескольких шаблонов и вставки каждого случая перекодированного значения (значений) в новый столбец. Столбец "Правильный" - это результат, которого я пытаюсь достичь.
Это похоже на этот вопрос и этот вопрос Если это не может быть выполнено с помощью case_when (я думаю, ограничено одним шаблоном), есть ли лучший способ можно еще добиться с помощью tidyverse?
Fruit=c("Apples","apples, maybe bananas","Oranges","grapes w apples","pears")
Num=c(1,2,3,4,5)
data=data.frame(Num,Fruit)
df= data %>% mutate(Incorrect=
paste(case_when(
str_detect(Fruit, regex("apples", ignore_case=TRUE)) ~ "good",
str_detect(Fruit, regex("bananas", ignore_case=TRUE)) ~ "gross",
str_detect(Fruit, regex("grapes | oranges", ignore_case=TRUE)) ~ "ok",
str_detect(Fruit, regex("lemon", ignore_case=TRUE)) ~ "sour",
TRUE ~ "other"
),sep=","))
Num Fruit Incorrect
1 Apples good
2 apples, maybe bananas good
3 Oranges other
4 grapes w apples good
5 pears other
Num Fruit Correct
1 Apples good
2 apples, maybe bananas good,gross
3 Oranges ok
4 grapes w apples ok,good
5 pears other