我尝试了以下方法:
pathogens <- c("Adenovirus", "Coronavirus NL63", "Coronavirus HKU1", "Coronavirus 229E", "Coronavirus OC43", "Human Metapneumovirus", "Human Rhinovirus/Enterovirus", "Influzena A", "Influzena A/H1", "Influzena A/H3", "Influzena A/H1-2009", "Influzena B", "Parainfluenza Virus 1", "Parainfluenza Virus 2", "Parainfluenza Virus 3", "Parainfluenza Virus 4", "Respiratory Syncytial", "Bordetella parapertussis", "Bordetella pertussis", "Chlamydia pneumoniae", "Mycoplasma pneumoniae")
for (value in pathogens) {
df_nphl_combined2 <- df_nphl_combined %>%
mutate(!!value := if_else(str_detect(Results, value),1,0))
print(value)
}
这样做只会在我的数据框中添加一列,其中包含最后一个病原体。
我的目标是遍历数据框的结果列并使用 str_detect 查找每个病原体,然后创建一个列,如果患者有该病原体,则为 1,如果患者没有,则为 0。
感谢您的帮助。
答案 0 :(得分:0)
您可以使用 map
为每个 pathogens
创建新列。试试
library(tidyverse)
df_nphl_combined2 <- bind_cols(df_nphl_combined,
map_dfc(pathogens,
~df_nphl_combined %>%
transmute(!!.x := as.integer(str_detect(Results, .x)))))