首页 > 解决方案 > 与整体数据框相比,确定分组变量的 ntile

问题描述

我有一个大的分组观察数据集,我试图得到一个四分位数或其他四分位数,每个组与其他观察结果进行比较。

我尝试了 ntile of 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))

给了我正确的输出......但是在我的数据框上使用时它不能按预期工作

标签: r

解决方案


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

推荐阅读