【发布时间】:2020-03-19 04:40:35
【问题描述】:
我有一个代理数据框及其相应的销售产品数量
Gent_Code number_policies
A096 3
A0828 12
A0843 2
A0141 2
B079 7
B05 3
M012 5
P010 2
S039 3
我想计算每个值 (xi) 所在的百分位数,以使数据中 p% 的值低于 xi。 百分位数的最小值为 0,最大值非常接近 1,但不是 1。
我做了以下事情:
ag_df <- mutate(ag_df, pon_percentiles = ecdf(ag_df$pon)(ag_df$pon))
summary(ag_df$pon_percentiles )
Min. 1st Qu. Median Mean 3rd Qu. Max.
0.4805 0.4805 0.6417 0.6356 0.7738 1.0000
但是,我希望百分位数公式计算低于某个值,而不是低于或等于该值。
因此,向量中最小值的百分位值应为 0,最大值应为接近 1 但不完全为 1 的百分位。
Current output:
0.6666667 1.0000000 0.3333333 0.3333333 0.8888889 0.6666667 0.7777778 0.3333333 0.6666667
如果我们看到上面的输出,对于 number_policies (2) 的 min,该值为 0.3333 ,但我希望这是 0。 对于 12 的最大值,它不应该是 1,而是 0.99。
我如何在 R 中做到这一点? 我已经在 ecdf、cume_distr 等基本函数中搜索了相关参数,但找不到任何参数。 有人可以帮我解决这个问题吗?
【问题讨论】:
-
你能显示给定数据的预期输出吗?
-
你好@RonakShah.. 现在添加,我应该早点添加它
标签: r dplyr percentile