Я нашел этот полезный ответ на почти тот же вопрос, но это не совсем то, что мне нужно.

У меня есть возраст респондентов, непрерывная переменная, и я хотел бы перекодировать ее в категориальную при помощи tidyverse. Ссылка выше включает объяснения функций cut_number(), cut_interval() и cut_width(), но они не работают для меня, потому что я хотел бы перекодировать в категории которые я уже определил заранее , а именно диапазоны 18–34, 35–54 и 55+. Ни одна из этих функций cut не позволяет мне этого делать (по крайней мере, я не понимал, как это сделать).

Мне удалось запустить свой код без tidyverse, используя:

data$age[data$"Age(Self-report)"<35] <- "18-34"
data$age[data$"Age(Self-report)">34 & data$"Age(Self-report)"<55] <- "35-54"
data$age[data$"Age(Self-report)">55] <- "55+"

Но я стараюсь быть последовательным в своем стиле кодирования и хотел бы узнать, как это сделать в Tidyverse. Спасибо за любую помощь!

1
Chris J 18 Апр 2020 в 20:08

1 ответ

Лучший ответ

Подход tidyverse будет использовать dplyr::case_when для перекодирования переменной следующим образом:

data %>% 
  mutate(age = case_when(
    `Age(Self-report)` < 35 ~ "18-34",
    `Age(Self-report)` > 34 & `Age(Self-report)` < 55 ~ "35-54",
    `Age(Self-report)` > 55 ~ "55+"
  ))
1
stefan 18 Апр 2020 в 17:13