【发布时间】:2020-10-07 21:37:13
【问题描述】:
我正在尝试计算数据框中某个值的百分位等级,并且我在数据框中也有一个相关的频率来加权。我正在努力想出一个解决方案来计算原始值的百分位数,就好像整体分布是按频率复制的值以及按该频率复制的所有其他值。
例如:
groceries <- tribble(
~item, ~price, ~freq,
"apple", 1, 20,
"banana", 2, 5,
"carrot", 3, 1
)
groceries %>%
mutate(reg_ptile = percent_rank(price),
wtd_ptile = weighted_percent_rank(price, wt = freq))
# the expected result would be:
# A tibble: 3 x 5
item price freq reg_ptile wtd_ptile
<chr> <dbl> <dbl> <dbl> <dbl>
1 apple 1 20 0.0 0.0
2 banana 2 5 0.5 0.8
3 carrot 3 1 1.0 1.0
percent_rank() 是一个实际的 dplyr 函数。函数weighted_percent_rank() 怎么写?不确定如何在数据框和管道中进行这项工作。如果该解决方案也适用于团体,那就太好了。
编辑:使用uncount() 并没有真正起作用,因为不计算我正在使用的数据会产生 8000 亿行。还有其他想法吗?
【问题讨论】:
标签: r dplyr statistics