如何使用带有数据框的 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;没有它你会得到正确的结果。我只是在模仿你的例子。