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

时间:2018-07-21 14:47:51

标签: excel median

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

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import * as io from 'socket.io-client';

@Injectable({
  providedIn: 'root'
})
export class ChatService {

  private url = 'http://localhost:8080';
  private socket;

  sendMessage(message) {
    console.log("message sent");
    this.socket.emit('chat.to.server', message);
  }

  getMessages(): Observable<any> {
    let observable = new Observable(observer => {
      this.socket = io(this.url);
      this.socket.on('chat.to.client', (data) => {
        observer.next(data);
      });
      return () => {
        this.socket.disconnect();
      };
    })
    return observable;
  }
}
Question      Fully agree (1)   Agree (2)    Neither(3)      Disagree (4) 

所以对于问题Q1,有7个人完全同意,有4个人完全同意,等等。

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

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

对于问题Q1,有7个人回答“完全同意”,3个人回答“同意”,2个人回答“都不同意”,5个人回答“不同意”。我想计算问题Q1的答案中位数:“完全同意”等于数字1,“同意”为2,都不为3,不同意为4。因此,问题1的所有答案都是: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,2。中位数是1

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

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

4 个答案:

答案 0 :(得分:2)

这是一个很有趣的方法,它包含一个非常简单的公式:

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

enter image description here

请参阅“说明”列,其中显示了我如何构建一个由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)))

答案 1 :(得分:2)

我选择将您的个位数分数重复到一个字符串中,并通过MID和一些数学方法得出中位数。

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

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

enter image description here

答案 2 :(得分:1)

这是您想要的吗?

”在此处输入图片描述“

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)

答案 3 :(得分:1)

只需:

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

:)

编辑
ups ...那是“平均”

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

{=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}))}