Excel 中的研究数据分析:x 乘以列值的中位数

Research data analysis in Excel: Median of x times column value

我需要分析实证研究数据。

Question      Fully agree (1)   Agree (2)    Neither(3)      Disagree (4) 
Q1                 7               3             2             5   
Q2                 10              7             0             0  
Q3                 4               3             3             7  
Q4                 15              0             2             0

所以对于问题Q1,7人完全同意,4人同意,依此类推

我必须计算所有问题的中位数。结果应如下所示:

Question      Fully agree (1)   Agree (2)    Neither(3)      Disagree (4)    Median
Q1                 7               3             2             5               2

Q2                 10               7             0             0               1

对于问题 Q1,有 7 人回答"fully agree",3 人回答"agree",2 人回答"Neither",5 人回答"Disagree"。我想计算问题 Q1 答案的中位数:"Fully agree" 等于数字 1,"Agee" 等于 2,既不等于 3 也不同意 4。所以 Q1 的所有答案都是:1 ,1,1,1,1,1,1,2,2,2,3,3,3,4,4,4,4,4。中位数是:2

对于 Q2,它是:1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2。中位数是 1

通常我不使用 Excel,所以所有功能对我来说都是新的。我现在已经尝试了几个小时的不同解决方案:例如VLOOKUP (Copy value N times in Excel)

不幸的是,到目前为止我没有成功;也许有一个非常简单的解决方案来计算中位数 :)。希望有一个不基于 VPA 的解决方案,因为我在这里的经验更少。 非常感谢您的帮助

这是你想要的吗?

F3: =SUM(B3:E3)/2

G3: =SUM($B3:B3)

H3: =SUM($B3:C3)

I3: =SUM($B3:D3)

J3: =SUM($B3:E3)

K3: =IFERROR(MATCH(F3,G3:J3,1)+1,1)

只需做:

=SUMPRODUCT({1,2,3,4},B2:E2)/SUM(B2:E2)

:)

编辑:
up...那是 "mean"

我能够创建的中位数最佳解决方案是:

{=MEDIAN(IF(ROW(A1:INDEX(A:A,B2)),1),IF(ROW(A1:INDEX(A:A,C2)),2),IF(ROW(A1:INDEX(A:A,D2)),3),IF(ROW(A1:INDEX(A:A,E2)),4))}

但它会将“0”计为 1 :(

{=MEDIAN(IF(B3,IF(ROW(A2:INDEX(A:A,B3)),1)),IF(C3,IF(ROW(A2:INDEX(A:A,C3)),2)),IF(D3,IF(ROW(A2:INDEX(A:A,D3)),3)),IF(E3,IF(ROW(A2:INDEX(A:A,E3)),4)))}

但这会将每个 0 计为 0 :(

好的...这应该有效:

{=MEDIAN(IF(B3,IF(ROW(A2:INDEX(A:A,B3)),1),{0,5}),IF(C3,IF(ROW(A2:INDEX(A:A,C3)),2),{0,5}),IF(D3,IF(ROW(A2:INDEX(A:A,D3)),3),{0,5}),IF(E3,IF(ROW(A2:INDEX(A:A,E3)),4),{0,5}))}

这是一种使用非常简单的公式的有趣方法:

=MID(REPT(1,B3)&REPT(2,C3)&REPT(3,D3)&REPT(4,E3),SUM(B3:E3)/2,1)

请参阅解释列,它显示了我如何构建一个由所有带有 REPT(1,B3)&REPT(2,C3)&REPT(3,D3)&REPT(4,E3) 的值组成的字符串。我所要做的就是提取中间值,这就是 MID(Explanation,Number of entries / 2, 1)

如果你有偶数个答案,并且想要拆分差异应该说中间点在值 2 和 3 之间,你可以使用这个数组输入公式: =AVERAGE(VALUE(MID(REPT(1,B3)&REPT(2,C3)&REPT(3,D3)&REPT(4,E3),SUM(B3:E3)/2+ISEVEN(SUM(B3:E3))*{0,1},1)))

我选择将你的个位数分数重复成一个字符串,然后用 MID 和一些数学算出中位数。

=IF(ISODD(SUM(B2:E2)),--MID(REPT(B,B2)&REPT(C,C2)&REPT(D,D2)&REPT(E,E2),CEILING.MATH(SUM(B2:E2)/2),1), AVERAGE(--MID(REPT(B,B2)&REPT(C,C2)&REPT(D,D2)&REPT(E,E2), SUM(B2:E2)/2,1), --MID(REPT(B,B2)&REPT(C,C2)&REPT(D,D2)&REPT(E,E2), SUM(B2:E2)/2+1,1)))

我使用了自定义数字格式,因此 B1:E1 中的分数可以保留为实数,但如果您更喜欢真正的文本标签,可以将数字硬编码到 REPT 函数中。