Как эффективно разбить числовой столбец на группы с помощью dplyr? - PullRequest
1 голос
/ 23 октября 2019

У меня есть числовой столбец и я пытаюсь использовать функцию case_when. Я знаю, что ntile() может разбивать числа на равные группы, например

# data
data = data.frame(id=c(1,1,1,2,2,2,3,3,3,4,4,4), time=seq(1:3), x=seq(from=10, to=120, by=10))

# automatic grouping works
data%>%
  mutate(x_group = ntile(x, n=4))

, но я хотел бы указать эти группы вручную:

# manual grouping fails 
data %>%
  mutate(x_group = case_when(x < 30 ~ 1,
                               30 <= x < 50 ~ 2,
                               50 <= x < 70 ~ 3,
                               70 <= x ~ 4))

Я думаю, проблема может бытьбыть в комбинации условностей?

1 Ответ

2 голосов
/ 23 октября 2019

Необходимо указать два отдельных логических сравнения в R

data %>%
  mutate(x_group = case_when(x < 30 ~ 1,
                             30 <= x & x < 50 ~ 2,
                             50 <= x & x < 70 ~ 3,
                             70 <= x ~ 4))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...