Создание группирующей переменной в R - PullRequest
0 голосов
/ 24 марта 2020

Я успешно написал три независимые команды флага, однако, когда я пытаюсь объединить их в одну, это не работает!

Следующие три команды создают переменную флага для возрастов 23, 24 и 25 :

income_2017_18$agegroup23 <- 
ifelse(income_2017_18$age==23, 1, 0)

income_2017_18$agegroup24 <- 
ifelse(income_2017_18$age==24, 1, 0)

income_2017_18$agegroup25 <- 
ifelse(income_2017_18$age==25, 1, 0)

Я пытаюсь написать команду, которая создает флаг, независимо от того, находится ли дело в возрасте 23, 24 или 25 лет, но, похоже, я не могу заставить его работать:

income_2017_18$income2325 <- 
ifelse((income_2017_18$age==23) | 
(income_2017_18$age==24) | 
(income_2017_18$age==25), 1) 

Благодарен за любые предложения.

Приветствия.

Ответы [ 3 ]

0 голосов
/ 24 марта 2020

Вместо использования == мы можем использовать %in%

income_2017_18$income2325 <- ifelse(income_2017_18$age %in% c(23, 24, 25), 1, 0)

здесь, ifelse не требуется

+(income_2017_18$age %in% c(23, 24, 25))
0 голосов
/ 25 марта 2020

@ Джон Уайлдман, можете ли вы дважды проверить свой вывод, используя следующий код, я думаю, что вы просто пропускаете 0 для условия отсутствия совпадения:

income_2017_18$income2325 <- 
  ifelse((income_2017_18$age==23) | 
           (income_2017_18$age==24) | 
           (income_2017_18$age==25), 1,0)

Проверено с использованием следующих данных

income_2017_18 <- data.frame(age=19:30)

Вывод

[1] 0 0 0 0 1 1 1 0 0 0 0 0

@ Акрун более лаконичен и элегантен.

0 голосов
/ 24 марта 2020

Может ли это помочь:

income_2017_18$income2325 <- 
ifelse(income_2017_18$age %in% 23:25, 1, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...