r - 带有子字符串 R 的 ifelse
问题描述
感觉这应该是一个简单的问题,但我看过这里和其他地方,找不到简单的答案。
我有调查回复,我需要为回复来源创建一个 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 的常见问题解答非常无用。
解决方案
你可以试试这个,它只使用基础 R:
data$grad_svy <- as.numeric(grepl("graduate survey", data$comment))
grepl
"graduate survey"
如果在中找到模式,将返回一个逻辑向量data$comment
。然后使用as.numeric
会将逻辑向量转换为您的数字: 1 = TRUE
, 0 =FALSE
推荐阅读
- javascript - 使用 Ajax(无 jQuery)调用 PHP 脚本
- jquery - 试图让每个 Div 在滚动到时出现
- mongodb - MongoDB Compass 社区:聚合中的 $match 给出“预期”[“或 AggregationStage 但”{“找到。”
- pandas - sklearn 确保按预期排序的特征进行预测
- sql - T-SQL UDF 与完整表达式运行时
- java - ListSelectionListener 导致 View 冻结 - 仅当外部 LookAndFeel 被激活时
- javascript - 在我的 partialView 完成加载之前运行的 JS 文件
- c# - 无法让旧版 XML-RPC 网站在 IIS 8.0 集成模式下工作
- openlayers - 如何将地图上的缩放工具从右上角移动到右下角?
- java - 在不相关(长)计划进程上运行测试时,Hikari 失败并出现 ErrorCode(17002)