对不起,如果这是一个愚蠢的问题,但我不知道用什么关键字来找到答案,所以我没有得到完全是我想要的。
我有一个专栏: df$infecting_agent。参赛作品有“葡萄球菌”、“细菌”、“病毒”、“细菌”等。
我想要两个新列:df$细菌和df$virus。
如果诊断条目包含"bact“、"cocc”或"staph“,那么所有的观察结果都有一个细菌的"1”,在引号之前或之后允许任何内容。我将对病毒列做类似的操作,许多观察结果在这两列中都有1。
有人能告诉我使用什么包吗,或者至少我应该用什么“行话”来查找我的问题?我尝试了“在R中用0或1替换字符串”的变体,但我认为我没有得到任何相关的信息。
谢谢大家!
发布于 2017-04-11 00:30:03
您可以使用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 0https://stackoverflow.com/questions/43334779
复制相似问题