带子串R的ifelse
这感觉应该是一个简单的问题,但我看了这里和其他地方,找不到简单的答案 我有调查回应,我需要为回应的来源创建一个1/0虚拟。我试图通过查看comment字段中的所有数据来创建一个简单的flag变量,如果子字符串匹配,则将其标记为1 数据例带子串R的ifelse,r,if-statement,substr,R,If Statement,Substr,这感觉应该是一个简单的问题,但我看了这里和其他地方,找不到简单的答案 我有调查回应,我需要为回应的来源创建一个1/0虚拟。我试图通过查看comment字段中的所有数据来创建一个简单的flag变量,如果子字符串匹配,则将其标记为1 数据例 ID comment 1 rubber chickens 2 180107 RG - email taken from 2017 graduate survey 我需要R来查看注释字段,任何时候它看到短语“毕业生调查”将我的毕业生字
ID comment
1 rubber chickens
2 180107 RG - email taken from 2017 graduate survey
我需要R来查看注释字段,任何时候它看到短语“毕业生调查”将我的毕业生字段编码为1,否则为0
当我写作时
data$grad_svy <- ifelse((substr(data$comment,34,49) == "graduate survey"),1,0)
data$grad\u svy您可能需要使用grepl
和data.table
来处理类似的事情。例如:
library(data.table)
setDT(data)
data[, grad_svy := as.numeric(grepl("graduate survey", comment))]
您可以尝试此方法,它只使用基本R:
data$grad_svy <- as.numeric(grepl("graduate survey", data$comment))
data$grad\u svy您确定要从34岁开始吗?当我把你的第二根弦放在上面时,我在开头得到一个空格substr(x,35,49)=“毕业生调查”
是真的
你可能是对的,这更好,但我不是程序员,所以当你写grad\u svy:=1或[]vs()这样的东西时,我真的看不懂你的意思。你也可以说我应该知道那些东西,但既然我不知道,我宁愿按照我知道的方式去做,即使它很麻烦,也不愿意复制粘贴b/c,因为我不懂语法。感谢您的评论。grepl
函数,如@Dave所述,只需搜索字符串中的模式。i、 e.grepl(“a”,“and”)
将返回TRUE
,因为字母“a”在“and”中。其他一切都是data.table
语法。这很好用,谢谢。非常感谢您添加第二部分来解释语法的作用。我缺乏srs编程背景,所以很多我想我应该知道的东西,我只是不知道语法。感谢您提供详细信息。欢迎来到社区!不要气馁,这需要时间、良好的实践和耐心。如果这回答了你的问题,尽管没有义务这样做,但请随意接受它作为回答。学习愉快!谢谢我已经成为会员/潜伏者很长一段时间了,在分析方面有很多经验,但几乎都是通过SPSS、SAS、STATA、Excel,所以没有真正的编程。因此,程序员使用的许多字符、符号和语法我并不熟悉。感谢您的帮助,我非常感谢。+grepl(“研究生调查”,data$comment)
同样有效