我想检测字符串中是否存在特定的关键词和短语,如果有,我想在一个新列中发布一个特定的数字。我的问题是,有些字符串有多个关键字,但case_when只返回第一个匹配项。是否有方法解决这个问题,或者我应该使用替代方案来代替case_when?
ID<-c(1,2,3,4,5)
fruits<-c("banana apple orange", "apple orange", "orange", "orange apple", "nothing")
df<-data_frame(ID,fruits)
#I need to assign a random number to each fruit type
df %>%
mutate("Fruit Type"=case_when(
grepl("banana",fruits)~34,
grepl("apple",fruits)~45,
grepl("orange",fruits)~88,
))
ID fruits Fruit Type
1 banana apple orange 34
2 apple orange 45
3 orange 88
4 orange apple 45
5 nothing NA
我希望你能够理解我的意思。
ID fruits fruit_type
1 banana apple orange 34
1 banana apple orange 45
1 banana apple orange 88
2 apple orange 45
2 apple orange 88
3 orange 88
4 orange apple 88
4 orange apple 45
5 nothing NA
此外,有没有一种方法可以将其转换为长格式,以使其更像这样呈现?
ID fruits fruit_type fruit_type2 fruit_type3
1 banana apple orange 34 45 88
2 apple orange 45 88 NA
3 orange 88 NA NA
4 orange apple 88 45 NA
5 nothing NA NA NA