这感觉应该是一个简单的问题,但我看过这里和其他地方,找不到简单的答案。
我有调查回复,我需要为响应源创建一个1/0虚拟对象。我试图通过查看注释字段中的所有数据来创建一个简单的标志变量,如果子字符串匹配,则标记它1.
数据EG
ID comment
1 rubber chickens
2 180107 RG - email taken from 2017 graduate survey
我需要R来查看评论字段,并且只要它看到“毕业生调查”这个短语就可以将我的grad_svy字段编码为1,否则为0。
写作时
data$grad_svy <- ifelse((substr(data$comment,34,49) == "graduate survey"),1,0)
它会运行,但它没有标记为1,实际上有数百个地方它应该标记为1.我知道两个字母的短语从34开始,到49结束,该领域的每个实例。我不确定我在做什么,ifelse和substring的常见问题非常有用。
答案 0 :(得分:1)
您可能希望使用grepl
和data.table
来完成此类操作。例如:
library(data.table)
setDT(data)
data[, grad_svy := as.numeric(grepl("graduate survey", comment))]
答案 1 :(得分:1)
你可以尝试这个,它只使用基础R:
data$grad_svy <- as.numeric(grepl("graduate survey", data$comment))
如果在grepl
中找到模式"graduate survey"
, data$comment
将返回逻辑向量。然后使用as.numeric
会将该逻辑向量转换为数字:1 = TRUE
,0 = FALSE