GREP в функции мутирования - PullRequest
0 голосов
/ 26 июня 2018

Я пытаюсь переклассифицировать набор данных с использованием GREP.Я хотел бы добавить новый столбец и заполнить его, основываясь на том, существует ли строка в другом столбце:

wi.listings.Recode<-mutate(wi.listings, Check=ifelse(wi.listings$ListingDescription == grepl('Veranda', wi.listings$ListingDescription, ignore.case=TRUE), 'Veranda','Non Veranda'))

Возвращает все «Non Veranda», поэтому что-то не работает должным образом в функции ifelse.

Ответы [ 2 ]

0 голосов
/ 26 июня 2018

Проблема заключается в использовании == для grepl, поскольку grepl возвращает логический вектор.Нам не нужно снова сравнивать исходный столбец с логическим вектором.Часть grepl перейдет в параметр test ifelse

mutate(wi.listings, Check = ifelse(grepl("Veranda", ListingDescription, 
              ignore.case = TRUE), "Veranda", "Non Veranda")))
0 голосов
/ 26 июня 2018

grepl возвращает логическое значение, которое вы затем сравниваете со строкой символов (ListingDescription);это сравнение всегда вернет FALSE.Просто используйте результат grepl:

wi.listings.Recode <- mutate(wi.listings, HasVeranda = ifelse(grepl("Veranda", ListingDescription, ignore.case = TRUE), "Veranda", "Non Veranda"))

Кроме того, вам может быть интересно узнать о нестандартной оценке , которую использует dplyr, чтобы вам не приходилось явно ссылаться на имена столбцовиз data.frame мутирует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...