Перекодировать в R не получая желаемый результат - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь перекодировать возрастные переменные в три категории в R, но они не распределяются должным образом:

data_2017_18$ageband3 <- 
dplyr::recode(data_2017_18$age, '1:30' = 1L, 
'31:50' = 2L, '51:99' = 3L)

Я бы предположил, что кросс-таблица с возрастом будет:

ageband 1 2 3

Однако, когда я смотрю на набор данных, он помещает значение возраста каждого в переменную 'ageband3'.

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 30 марта 2020

Я думаю, что нет необходимости в recode. Самое простое решение - использовать cut:

data_2017_18$ageband3 <- cut(data_2017_18$age, cut(1:100, breaks = c(0, 30,50, Inf)) 

Использовать cut(data_2017_18$age, breaks = c(0, 30,50, Inf), labels = c(1,2,3)), если вы предпочитаете маркировать свои уровни 1,2 и 3. Но R довольно хорошо обрабатывает значения интервалов (например, [0,30]) )

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

Есть много способов go об этой задаче в R, и вот мое предложение tibble(age=1:99L) %>% mutate(age_recoded=if_else(age %in% c(1:30),1L, if_else(age %in% c(31:50),2L,3L))) %>% count(age_recoded). Я надеюсь, что это помогает.

...