如何在R中查找因子水平的中位数?


第二常用的集中趋势度量——中位数,是在我们拥有顺序数据或连续数据存在异常值时计算的,如果存在因子数据,我们可能需要查找各水平的中位数以进行比较。最简单的方法是使用aggregate函数查找摘要。

示例

考虑一下包含一列因子数据的以下数据框:

 在线演示

set.seed(191)
x1<-as.factor(sample(LETTERS[1:3],20,replace=TRUE))
x2<-sample(1:10,20,replace=TRUE)
df1<-data.frame(x1,x2)
df1

输出

  x1 x2
1  B 6
2  C 5
3  B 4
4  C 8
5  B 5
6  B 5
7  A 4
8  C 8
9  C 3
10 C 4
11 B 9
12 A 10
13 C 6
14 C 1
15 A 10
16 A 3
17 A 5
18 C 7
19 B 3
20 C 1

示例

> str(df1)

输出

'data.frame': 20 obs. of 2 variables:
$ x1: Factor w/ 3 levels "A","B","C": 2 3 2 3 2 2 1 3 3 3 ...
$ x2: int 6 5 4 8 5 5 4 8 3 4 ...

查找x1类别中x2的中位数:

示例

aggregate(x2~x1,data=df1,summary)

输出

  x1 x2.Min. x2.1st Qu.x2.Median x2.Mean x2.3rd Qu.   x2.Max.
1 A 3.000000 4.000000 5.000000   6.400000 10.000000 10.000000
2 B 3.000000 4.250000 5.000000   5.333333 5.750000  9.000000
3 C 1.000000 3.000000 5.000000   4.777778 7.000000  8.000000

让我们看另一个例子:

示例

 在线演示

Temperature<-as.factor(sample(c("Cold","Hot"),20,replace=TRUE))
Sales<-sample(50000:80000,20)
df2<-data.frame(Temperature,Sales)
df2

输出

   Temperature Sales
1    Cold    72210
2    Cold    56758
3    Hot     53809
4    Hot     79977
5    Hot     77135
6    Cold    56932
7    Hot     51104
8    Cold    67742
9    Hot     75402
10   Hot     62546
11   Cold    68520
12   Hot     54575
13   Cold    51591
14   Hot    55232
15   Hot    77742
16   Hot    62507
17   Hot    62156
18   Cold   73853
19   Cold   69807
20   Hot    53930

查找温度类别中销售额的中位数:

示例

aggregate(Sales~Temperature,data=df2,summary)

输出

 Temperature Sales.Min. Sales.1st Qu. Sales.Median Sales.Mean Sales.3rd Qu.
1    Cold    51591.00    56888.50    68131.00       64676.62    70407.75
2    Hot     51104.00    54413.75    62331.50       63842.92    75835.25
 Sales.Max.
1 73853.00
2 79977.00

更新于:2020年10月17日

1K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告
© . All rights reserved.