2016-12-14 65 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为真。