5 个值数组中的中位数数组索引



我在Excel VBA中有一个5个数字的数组。

每个数组索引号都是一个 x 坐标,每个索引处的数组值是 Y 坐标/值。我试图根据数组中的 y 值在数组中找到"中位数"x 坐标。

示例 1:

Array(1) = 1, Array(2) = 0, Array(3) = 1, Array(4) = 1, Array(5) = 2

我设想 x 坐标中位数将是(四舍五入后)索引 4 - Excel 中是否有函数支持确定这一点,或者请提供一些建议的代码?

示例 2:

Array(1) = 7, Array(2) = 1, Array(3) = 4, Array(4) = 7, Array(5) = 1

我设想 x 坐标中位数将是(四舍五入后)索引 3?

例3:

Array(1) = 1, Array(2) = 0, Array(3) = 0, Array(4) = 0, Array(5) = 6

我设想 x 坐标中位数将是(四舍五入后)索引 5?

例4:

Array(1) = 5, Array(2) = 0, Array(3) = 7, Array(4) = 0, Array(5) = 6

我设想 x 坐标中位数将是(四舍五入后)索引 3?

提前感谢!

我不认为你上面的定义是一个准确的描述,即x和y坐标。

尽管如此,您正在处理一个一维数组,并试图在其中找到中位数。因此,根据中位数的定义,您需要按数字顺序重新组织数组,并找到将数组划分为"上"半部分和"下"半部分的数字。确定此值后,可以通过其原始索引值(根据定义为 x coord)引用此数字,也可以通过新的索引值引用此数字。

为了清楚起见,让我们通过上面的第一个示例。

上面的示例 1:

Array(1) = 1, Array(2) = 0, Array(3) = 1, Array(4) = 1, Array(5) = 2

因此:

Array = Array(1, 0, 1, 1, 2)

重新排序:

Array(0, 1, 1, 1, 2)

从上面可以看出,唯一需要发生的转换是原始索引 1 和 2 需要重新排序才能实现此目的。如果这是您采取的路线,则索引 3 (x coord) 将是数组中值的中位数索引。

最后,我认为您的中值将取决于 a) 您从无序到有序的转换,以及 b) NEW 数组的索引值。

希望这有帮助!

最新更新