Как создать бункеры в R - PullRequest
0 голосов
/ 01 марта 2019

У меня есть фрейм данных с именем cst со столбцами country, ID и age.Я хочу сделать ячейки для age (разделить все идентификаторы на децили или квартили) для каждой отдельной страны.Я использовал этот способ:

cut(cst[!is.na(cst$age), "age"], quantile(cst["age"], probs = seq(0,1,0.1), na.rm = T))

Тем не менее, он создает корзины для всех фреймов данных, но мне нужно для каждой страны в отдельности.
Не могли бы вы помочь мне?

Ответы [ 2 ]

0 голосов
/ 01 марта 2019

Все, что вам нужно сделать, это применить подмножество перед использованием cut.Также не используется библиотека dplyr.

for (c in unique(as.list(cst$country))) {
  sub <- subset(cst, country == c)
  cut(sub[!is.na(sub$age), "age"], quantile(sub["age"], probs = seq(0,1,0.1), na.rm = T))
}
0 голосов
/ 01 марта 2019

Я бы попробовал с dplyr решением, это выглядело бы примерно так:

library(dplyr)
cst2 <- cst %>%
  group_by(country) %>%
  mutate(
    bin = cut(age, quantile(age, probs=seq(0,1,0.1), na.rm=TRUE))
  ) %>%
  ungroup()
...