我使用哪个 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" 的变体,但我认为我没有得到任何相关信息。
谢谢大家!
您可以使用 dplyr
和 stringr
来做到这一点:
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
抱歉,如果这是一个愚蠢的问题,但我不确定使用什么关键字来找到答案,所以我得到的结果都不是我要找的。
我有一个专栏: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" 的变体,但我认为我没有得到任何相关信息。
谢谢大家!
您可以使用 dplyr
和 stringr
来做到这一点:
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