【问题标题】:Median array index in an array of 5 values5 个值的数组中的中值数组索引
【发布时间】:2019-05-31 06:20:20
【问题描述】:

我在 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?

提前致谢!

【问题讨论】:

标签: excel vba


【解决方案1】:

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

尽管如此,您正在处理一个一维数组,并且您正试图在其中找到中位数。因此,根据中位数的定义,您需要按数字顺序重新组织数组,并找到将数组划分为“上”一半和“下”一半的数字。一旦你建立了这个,你可以通过它的原始索引值(你定义的 x 坐标)来引用这个数字,或者它是新的索引值。

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

上面的例子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 坐标)将是数组中值的中值索引。

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

希望这会有所帮助!

【讨论】:

  • 嗨 - 感谢您的回答 :) 我想我需要提供更多信息,我试图找到“中位数”的值 - 也许我应该称之为中点 - 是风险收视率。所以评级是这样的: 数组索引 1 处的值 = 数组索引 2 处的无意义值 = 数组索引 3 处的低值 数组索引 3 处的值 = 数组索引 4 处的值 = 数组索引 5 处的高值 = 极端 所以如果我有一个范围来自不同人关于他们对风险的看法的意见,我想获得整个组的中值或平均风险值。
  • 所以使用示例 1,我认为风险等级是数组索引 4。我还没有进入编码阶段,因为我想看看人们对如何实现这一点的看法。再次感谢您的帮助 - 我是新手!
  • @Tiberius1701a 你提到你想要获得 MEDIAN 或 AVERAGE。这是两个不同的东西。也许您指的是数组的平均值?
  • 嗨,Dean - 我仔细检查了 MEAN 的定义,但我认为这不是我想要的。我正在寻找的值(避免使用 MEDIAN 或 AVERAGE 一词)是所有选票的共同风险值。不用担心——我非常感谢迄今为止的所有反馈——我想我会进一步思考这个问题,看看是否有什么想法。再次感谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 2015-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多