计算百分位数的条件数组

Posted

技术标签:

【中文标题】计算百分位数的条件数组【英文标题】:Conditional array to calculate percentiles 【发布时间】:2016-03-11 13:03:08 【问题描述】:

我有一些数据如下:

    val   crit  perc
0.415605498 1   perc1
0.475426007 1   perc1
0.418621318 1   perc1
0.51608229  1   perc1
0.452307882 1   perc1
0.496691416 1   perc1
0.402689126 1   perc1
0.494381345 1   perc1
0.532406777 1   perc1
0.839352016 2   perc2
0.618221702 2   perc2
0.83947033  2   perc2
0.621734007 2   perc2
0.548656662 2   perc2
0.711919796 2   perc2
0.758178085 2   perc2
0.820954467 2   perc2
0.478645786 2   perc2
0.848323655 2   perc2
0.844986383 2   perc2
0.418155292 2   perc2
1.182637063 3   perc3
1.248876472 3   perc3
1.218368809 3   perc3
0.664934398 3   perc3
0.951692853 3   perc3
0.848111264 3   perc3
0.58887439  3   perc3
0.931530464 3   perc3
0.676314176 3   perc3
1.270797783 3   perc3

我正在尝试使用 percentile.inc() 函数来计算 crit 的每个级别的第 5 个百分位数(因为我已将变量 var 分类为类)。

我尝试使用=PERCENTILE.INC(IF($B$2:$B$32=1,$A$2:$A$32,IF($B$2:$B$32=2,$A$2:$A$32,IF($B$2:$B$32=3,$A$2:$A$32,""))),0.05),但它所做的只是计算整个数组的百分位数,而不是返回条件百分位数。

欢迎任何帮助(仅供参考,我必须在 26000 行和 20 个级别的 crit 上执行此操作)!

【问题讨论】:

您正试图从一个公式中得到三个答案。我建议您需要在三个单元格中使用相同的(修改后的)公式来分离三个暴击值的结果。一直在为您尝试修改后的公式,将到达那里。顺便说一句,您的最后一个参数 0.05 = 第 5 个百分位,而不是第 0.05 个百分位。 感谢有人已经解决了它! 【参考方案1】:

这对我有用。我有以下布局:

我在G3中使用了以下公式:

=PERCENTILE.INC(IF(B:B=F3,A:A),0.05)

这是一个数组公式,所以输入Ctrl+Shift+Enter。 根据需要向下拖动。

【讨论】:

它似乎有效,但我应该指定我希望它给我一个表格形状的结果......与每一行关联的值。有什么聪明的方法吗? 那么在你的 perc 列中,你想要百分位数吗? 没错!可能是小细节,但它会帮助我接下来要做的事情(顺便说一句,你的公式在整个数据集上都能完美运行)。 你可以做的是在 C2 中使用这个公式(假设你有标题)并向下拖动:=PERCENTILE.INC(IF(B:B=B2,A:A),0.05) 是的,A:A 和 B:B 解决方案的处理过程非常疯狂……实际数组更平滑。非常感谢!

以上是关于计算百分位数的条件数组的主要内容,如果未能解决你的问题,请参考以下文章

python使用pandas中的groupby函数和agg函数计算每个分组数据的两个分位数(例如百分之10分位数和百分之90分位数)

Pandas .. 分位数函数是不是需要排序数据来计算百分位数?

R语言分位数计算Percentiles

在 SQL 中分析并形成分位数并计算落在各个分位数中的值的百分比

从长数组计算百分位数?

JavaScript中的分位数/百分点/百分位数/逆累积分布函数