确定分组变量与整体数据框相比的ntile

时间:2019-04-18 00:18:39

标签: r

我有一个大的分组观测数据集,我试图将每组与其余观测值进行比较的四分位数或其他位数。

我已经尝试过使用累积量和类似方法,但是我对输出错误感到非常生气,或者每次观察都得到四分位数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 个答案:

答案 0 :(得分:0)

似乎不需要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