#r
#r
Вопрос:
У меня есть большой набор данных сгруппированных наблюдений, я пытаюсь получить квартиль или другой конечный показатель того, где каждая группа сравнивается с остальными наблюдениями.
Я пробовал ntile cumsum и аналогичные методы, но я очень злюсь из-за ошибок вывода или получаю квартиль 1 для каждого наблюдения. Я также попытался сравнить ntile с родительским фреймом данных, r это тоже не понравилось.
Я уверен, что это очень просто, но мой мозг сегодня поджарен.
df <- tibble(ID= c("a", "b", "c", "d", "a", "b", "c", "d"),
population = c(10, 200, 3000, 40000, 120, 220, 3300, 44000))
df <- group_by(df, ID) %>%
summarize(quartile = ntile(2, 4))
Я ожидаю, что у меня будет квартиль 1-4, поскольку он разделяется на основе разных размеров населения.
Вместо этого все просто отображается как 1, и я не могу понять, почему.
На что я надеюсь:
ID quartile
a 1
b 2
c 3
d 4
Редактировать:
df <- mutate(df,
quartile = ntile(x = population, 4))
дает мне правильный вывод … однако он не работает должным образом при использовании в моем фрейме данных
Комментарии:
1. поскольку вы groupby , в каждой группе есть только одно значение , так что у вас будет только 1 в качестве out put
2. Есть какие-нибудь идеи о том, как достичь моей цели?
3. У меня есть добавить ответ по этому поводу
4. У меня тоже была эта проблема. Каждый квантиль равен 1
Ответ №1:
Кажется group_by
, здесь нет необходимости
df['quartile']=ntile(df$population,4)
df
# A tibble: 4 x 3
ID population quartile
<chr> <dbl> <int>
1 a 10 1
2 b 200 2
3 c 3000 3
4 d 40000 4
Комментарии:
1. Вы правы в этом df, но мои фактические данные действительно должны быть сгруппированы, я думаю, вы, возможно, правы в отношении выхода из суммирования, но мне нужно сгруппировать