【发布时间】:2021-07-23 23:46:52
【问题描述】:
我正在尝试检测字符串中是否存在特定的关键字和短语,如果它们存在,我想在新列中发布特定的数字。我的问题是某些字符串有多个关键字,但 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
【问题讨论】: