2017-04-11 33 views
0

對不起,如果這是一個愚蠢的問題,但我不知道用什麼關鍵字來找到答案,所以沒有我得到的是我正在尋找的。我使用哪個包/函數來替換包含0或1的特定字母集的條目?

我有一列:df $ infecting_agent。參賽作品有像「金」,「細菌」,「病毒」,「細菌」等

我想兩個新列:DF $細菌和DF $病毒

我想所有觀察到有「 1「,如果診斷條目包含」bact「或」cocc「或」staph「,在引用內容之前或之後允許任何內容。我會爲病毒列做類似的事情,很多觀察結果在兩列中都會有1。

有人能告訴我要使用什麼包,或者至少應該用什麼「行話」來搜索我的問題?我嘗試了「在R中替換0或1的字符串」的變體,但我認爲我沒有得到任何相關的東西。

謝謝大家!

+0

這將有助於看到一些示例數據和所需的輸出的一個例子。目前還不清楚兩欄中如何有1個;我沒有看到一個代理可以是細菌和病毒。 – neilfws

+0

@neilfws:字符串可以是「細菌或病毒」。 – smci

+0

'df $ bacteria < - grepl(「bact」,df $ infecting_agent)'?如果你想要一個整數而不是邏輯數,加零如果你想要一個整數而不是邏輯 –

回答

1

你可以做到這一點與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 
+0

爲什麼downvote?它回答了這個問題。 –

+0

我認爲這個問題不明確。如果'infecting_agent' =病毒,'virus'列應該包含1。 – neilfws

+0

這工作完美,謝謝! – CineyApp

相關問題