2016-12-14 35 views
0

我有一個數據集,看起來像下面這樣:配套文件關鍵字

這是一個維護日誌和文字描述所做的工作和列的其餘部分是組件。每個條目都是一個單獨的維護項目,這是一個數據框。

Text          Engine Coolant Brakes Battery 
Engine Oil changed and battery replaced. 0  0  0  0 
Coolant changed.        0  0  0  0 

我期待改變它,這樣我得到像下面的一個數據幀:

Text          Engine Coolant Brakes Battery 
Engine Oil changed and battery replaced. 1  0  0  1 
Coolant changed.        0  1  0  0 

所以基本上我期待相符所服務的部分,並注意他們每個檢修項目。 我嘗試了一個ifelse(),但沒有成功。 我只有很長的一串零。 感謝您的輸入。

回答

0

您可以簡單地使用grepl這個

df <- data.frame(text = c("Engine Oil changed and battery replaced.", "Coolant changed.")) 

df$Engine <- grepl("Engine", df$text, ignore.case = TRUE)*1 
df$Coolant <- grepl("Coolant", df$text, ignore.case = TRUE)*1 
df$Brakes <- grepl("Brakes", df$text, ignore.case = TRUE)*1 
df$Battery <- as.numeric(grepl("Engine", df$text, ignore.case = TRUE)) 

注意,那grepl返回TRUE或FALSE。 *1將其變成數字。我用電池as.numeric來證明這一點。如果「電池」出現兩次,它仍然返回1爲真。