我在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 数组的索引值。
希望这有帮助!