如何使用带有数据框的 dplyr 在 R 中创建百分位数?
How to create percentiles in R using dplyr with data frame?
我想创建一个名为“百分位数”的附加列,百分位数将基于已售出的报价,我不想在其上创建 window 函数,百分位数应该是基于整个数据集。见下文,数据目前按 SOLD_QUOOTES 降序排列,理想情况下,我们在图像中看到的第一行应该是 99.99% 的百分位数,并且应该向下级联 table。
异常输出
也许是这样的,
library(dplyr)
df <- tibble(sold_quotes = sample(1e6, 1e3, replace = TRUE))
pctiles <- seq(0, 1, 0.001)
df %>%
arrange(desc(sold_quotes)) %>%
mutate(percentile = cut(sold_quotes,
quantile(sold_quotes,
probs = pctiles),
labels = pctiles[2:length(pctiles)]*100))
#> # A tibble: 1,000 x 2
#> sold_quotes percentile
#> <int> <fct>
#> 1 999562 100
#> 2 996533 99.9
#> 3 996260 99.8
#> 4 995499 99.7
#> 5 994984 99.6
#> 6 994937 99.5
#> 7 994130 99.4
#> 8 993001 99.3
#> 9 992902 99.2
#> 10 990298 99.1
#> # … with 990 more rows
百分位计算不依赖于按降序重新排列 sold_quotes
;没有它你会得到正确的结果。我只是在模仿你的例子。
我想创建一个名为“百分位数”的附加列,百分位数将基于已售出的报价,我不想在其上创建 window 函数,百分位数应该是基于整个数据集。见下文,数据目前按 SOLD_QUOOTES 降序排列,理想情况下,我们在图像中看到的第一行应该是 99.99% 的百分位数,并且应该向下级联 table。
异常输出
也许是这样的,
library(dplyr)
df <- tibble(sold_quotes = sample(1e6, 1e3, replace = TRUE))
pctiles <- seq(0, 1, 0.001)
df %>%
arrange(desc(sold_quotes)) %>%
mutate(percentile = cut(sold_quotes,
quantile(sold_quotes,
probs = pctiles),
labels = pctiles[2:length(pctiles)]*100))
#> # A tibble: 1,000 x 2
#> sold_quotes percentile
#> <int> <fct>
#> 1 999562 100
#> 2 996533 99.9
#> 3 996260 99.8
#> 4 995499 99.7
#> 5 994984 99.6
#> 6 994937 99.5
#> 7 994130 99.4
#> 8 993001 99.3
#> 9 992902 99.2
#> 10 990298 99.1
#> # … with 990 more rows
百分位计算不依赖于按降序重新排列 sold_quotes
;没有它你会得到正确的结果。我只是在模仿你的例子。