ifelse с подстрокой R - PullRequest
       5

ifelse с подстрокой R

0 голосов
/ 11 мая 2018

Такое чувство, что это должен быть простой вопрос, но я посмотрел здесь и в других местах и ​​не могу найти простой ответ.

У меня есть ответы на опрос, и мне нужно создать манекен 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 и подстроки были довольно бесполезны.

Ответы [ 2 ]

0 голосов
/ 11 мая 2018

Вы можете попробовать это, который использует только базу R:

data$grad_svy <- as.numeric(grepl("graduate survey", data$comment))

grepl вернет логический вектор, если шаблон "graduate survey" найден в data$comment. Затем использование as.numeric преобразует этот логический вектор в числа для вас: 1 = TRUE, 0 = FALSE

0 голосов
/ 11 мая 2018

Вы можете использовать grepl и data.table для подобных вещей. Например:

library(data.table)
setDT(data)
data[, grad_svy := as.numeric(grepl("graduate survey", comment))]
...