我使用哪个 package/function 来将包含特定字母组的条目替换为 0 或 1?

Which package/function do I use to replace entries containing a certain set of letters with a 0 or 1?

抱歉,如果这是一个愚蠢的问题,但我不确定使用什么关键字来找到答案,所以我得到的结果都不是我要找的。

我有一个专栏:df$infecting_agent。那里的条目有 "staphylococcus" "bacteria" "virus" "bacterial" 等

我想要两个新列:df$bacteria 和 df$virus

如果诊断条目包含 "bact" 或 "cocc" 或 "staph",我希望所有观察结果的细菌都为“1”,其中引号前后允许任何内容。我将为病毒列做类似的事情,许多观察结果在两列中都会有一个 1。

谁能告诉我要使用什么包,或者至少 "lingo" 我应该使用什么来搜索我的问题?我尝试了 "replace string with 0 or 1 in R" 的变体,但我认为我没有得到任何相关信息。

谢谢大家!

您可以使用 dplyrstringr 来做到这一点:

library(dplyr);library(stringr)

df1 <- data.frame(infecting_agent=c('staphylococcus','bacteria','virus','bacterial'))
df1 %>%
mutate(bacteria=ifelse(str_detect(infecting_agent, 'bact|cocc|staph'),1,0),
       virus=ifelse(str_detect(infecting_agent, 'vir|cocc'),1,0)
       )

  infecting_agent bacteria virus
1  staphylococcus        1     1
2        bacteria        1     0
3           virus        0     1
4       bacterial        1     0