Excel 中的分箱

发布于 2024-09-17 20:55:10 字数 54 浏览 6 评论 0 原文

我们可以使用 MS Excel 中的哪些公式进行

等深度分箱
等宽分箱

Which formulae in MS Excel can we use for -

equi-depth binning
equi-width binning

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

泪眸﹌ 2024-09-24 20:55:10

这是我用过的。我分箱的数据位于 A2:A2001 中。

等宽度:

我使用以下公式计算了单独单元格 (U2) 中的宽度:

=(MAX($A$2:$A$2001) - MIN($A$2:$A$2001) + 0.00000001)/10

10 是 bin 的数量。 + 0.00000000001 之所以存在,是因为如果没有它,等于最大值的值就会被放入自己的容器中。

然后,对于实际的分箱,我使用了这个:

=ROUNDDOWN(($A2-MIN($A$2:$A$2001))/$U$2, 0)

这个函数正在查找有多少个分箱- 宽度高于您的值的最小值,方法是将(值 - 最小值)除以 bin 宽度。我们只关心有多少个完整的 bin 宽度适合该值,而不是小数,因此我们使用 ROUNDDOWN 来截断所有小数 bin 宽度(即显示 0代码 > 小数位)。

等深度

这个比较简单。

=ROUNDDOWN(PERCENTRANK($A$2:$A$2001, $A2)*10, 0)

首先,获取当前单元格 ($A2) 的百分位数排名所有被分箱的单元格的数量 ($A$2:$A$2001)。这将是一个介于 0 和 1 之间的值,因此要将其转换为 bin,只需乘以所需的 bin 总数(我使用 10)。然后,按照以前的方法去掉小数。

对于其中任何一个,如果您希望 bin 从 1 而不是 0 开始,只需在公式末尾添加 +1 即可。

Here's what I used. The data I was binning was in A2:A2001.

Equi-width:

I calculated the width in a separate cell (U2), using this formula:

=(MAX($A$2:$A$2001) - MIN($A$2:$A$2001) + 0.00000001)/10

10 is the number of bins. The + 0.00000000001 is there because without it, values equal to the maximum were getting put into their own bin.

Then, for the actual binning, I used this:

=ROUNDDOWN(($A2-MIN($A$2:$A$2001))/$U$2, 0)

This function is finding how many bin-widths above the minimum your value is, by dividing (value - minimum) by the bin width. We only care about how many full bin-widths fit into the value, not fractional ones, so we use ROUNDDOWN to chop off all the fractional bin-widths (that is, show 0 decimal places).

Equi-depth

This one is simpler.

=ROUNDDOWN(PERCENTRANK($A$2:$A$2001, $A2)*10, 0)

First, get the percentile rank of the current cell ($A2) out of all the cells being binned ($A$2:$A$2001). This will be a value between 0 and 1, so to convert it into bins, just multiply by the total number of bins you want (I used 10). Then, chop off the decimals the same way as before.

For either of these, if you want your bins to start at 1 rather than 0, just add a +1 to the end of the formula.

仄言 2024-09-24 20:55:10

将此公式放入 B1 中:

=MAX( ROUNDUP( PERCENTRANK($A$1:$A$8, A1) *4, 0),1)

在此处输入图像描述

在 B 列中填写整个公式,然后就完成了。该公式将范围分为 4 个相等的桶,并返回单元格 A1 所属的桶编号。第一个存储桶包含最低 25% 的值。

一般模式是:

=MAX( ROUNDUP ( PERCENTRANK ([Range], [TestCell]) * [NumberOfBuckets], 0), 1)

Put this formula in B1:

=MAX( ROUNDUP( PERCENTRANK($A$1:$A$8, A1) *4, 0),1)

enter image description here

Fill down the formula all across B column and you are done. The formula divides the range into 4 equal buckets and it returns the bucket number which the cell A1 falls into. The first bucket contains the lowest 25% of values.

General pattern is:

=MAX( ROUNDUP ( PERCENTRANK ([Range], [TestCell]) * [NumberOfBuckets], 0), 1)
梦里梦着梦中梦 2024-09-24 20:55:10

最好的方法是使用内置方法:

http://support.microsoft.com/kb/214269< /a>

我认为该插件的 VBA 版本(大多数版本的步骤 3)也会为您提供代码。

Best approach is to use the built-in method:

http://support.microsoft.com/kb/214269

I think the VBA version of the addin (step 3 with most versions) will also give you the code.

另类 2024-09-24 20:55:10

您可能必须构建矩阵才能绘制图表。

对于 bin 支架,您可以使用 =PERCENTILE() 表示等深度,使用差值比例 =Max(Data) - Min(Data) 表示等宽度。

您可以使用=COUNTIF()获取频率。 bin 的平均值可以使用 =SUMPRODUCT((Data>LOWER_BRACKET)*(Data 获得。

更复杂的统计数据可以通过 SUMPRODUCT 和/或数组公式(其中我不推荐,因为对于非程序员来说很难理解)

You may have to build the matrix to graph.

For the bin bracket you could use =PERCENTILE() for equi-depth and a proportion of the difference =Max(Data) - Min(Data) for equi-width.

You could obtain the frequency with =COUNTIF(). The bin's Mean could be obtained using =SUMPRODUCT((Data>LOWER_BRACKET)*(Data<UPPER_BRACKET)*Data)/frequency

More complex statistics could be reached hacking around with SUMPRODUCT and/or Array formulas (which I do not recommend since are very hard to comprehend for a non-programmer)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文