Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带子串R的ifelse_R_If Statement_Substr - Fatal编程技术网

带子串R的ifelse

带子串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来查看注释字段,任何时候它看到短语“毕业生调查”将我的毕业生字

这感觉应该是一个简单的问题,但我看了这里和其他地方,找不到简单的答案

我有调查回应,我需要为回应的来源创建一个1/0虚拟。我试图通过查看comment字段中的所有数据来创建一个简单的flag变量,如果子字符串匹配,则将其标记为1

数据例

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)
同样有效