我有一个大的分组观测数据集,我试图将每组与其余观测值进行比较的四分位数或其他位数。
我已经尝试过使用累积量和类似方法,但是我对输出错误感到非常生气,或者每次观察都得到四分位数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))
为我提供了正确的输出...但是,在我的数据框上使用该输出时,它并没有达到预期的效果
答案 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