Определить ntile сгруппированной переменной по сравнению с общим кадром данных - PullRequest
1 голос
/ 18 апреля 2019

У меня есть большой набор данных сгруппированных наблюдений, я пытаюсь получить квартиль или другой тип, где каждая группа сравнивается с остальными наблюдениями.

Я испробовал несколько простых и аналогичных методов, но я очень разозлился из-за ошибок на выходе или получаю квартиль 1 для каждого наблюдения. Я также попытался сравнить ntile с родительским фреймом данных, но мне это тоже не понравилось.

Я уверен, что это очень просто, но мой мозг зажарен сегодня.

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

EDIT:

df <- mutate(df, 
             quartile = ntile(x = population, 4))

дает мне правильный вывод ... однако он не работает должным образом при использовании в моем фрейме данных

1 Ответ

0 голосов
/ 18 апреля 2019

Кажется, нет необходимости 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...