如何在R数据框中根据两个分类列查找数值列的均值?


如果R数据框中包含两个分类列和一个数值列,则可以使用aggregate函数结合这两个分类列来查找数值列的均值。例如,如果数据框df包含数值列X和两个分类列C1和C2,则可以使用以下命令查找X根据C1和C2组合的均值:

aggregate(X~C1+C2,data=df,FUN="mean")

示例

考虑以下数据框:

C1<-sample(LETTERS[1:4],20,replace=TRUE)
C2<-factor(sample(1:2,20,replace=TRUE))
X<-rnorm(20,30,2.87)
df1<-data.frame(C1,C2,X)
df1

输出

  C1 C2 X
1  A 2 30.56001
2  D 2 32.18580
3  A 1 36.63182
4  B 1 32.35519
5  A 1 30.40990
6  B 2 31.57616
7  B 1 28.53280
8  D 1 32.35574
9  B 1 30.53733
10 A 1 27.79314
11 C 2 29.54564
12 A 2 27.64586
13 D 1 27.27475
14 D 2 33.99874
15 D 1 30.41017
16 C 1 27.66988
17 A 1 30.69182
18 A 2 34.12661
19 C 2 34.07609
20 C 1 32.29219

查找X根据C1和C2组合的均值:

示例

 在线演示

aggregate(X~C1+C2,data=df1,FUN="mean")

输出

 C1 C2 X
1 A 1 31.38167
2 B 1 30.47510
3 C 1 29.98104
4 D 1 30.01355
5 A 2 30.77749
6 B 2 31.57616
7 C 2 31.81087
8 D 2 33.09227

示例

C1<-sample(c("Hot","Cold"),20,replace=TRUE)
C2<-sample(0:1,20,replace=TRUE)
Y<-rpois(20,5)
df2<-data.frame(C1,C2,Y)
df2

输出

   C1  C2 Y
1  Cold 1 7
2  Hot  1 5
3  Cold 0 5
4  Hot  1 3
5  Hot  0 5
6  Cold 1 6
7  Cold 1 10
8  Cold 0 2
9  Hot  1 7
10 Hot  1 4
11 Cold 1 7
12 Hot  0 4
13 Cold 0 4
14 Hot  1 3
15 Hot  1 4
16 Cold 0 5
17 Cold 0 8
18 Cold 0 5
19 Cold 0 3
20 Hot  1 7

查找Y根据C1和C2组合的均值:

示例

aggregate(Y~C1+C2,data=df2,FUN="mean")

输出

   C1 C2    Y
1 Cold 0 4.571429
2 Hot  0 4.500000
3 Cold 1 7.500000
4 Hot  1 4.714286

更新于:2020年12月8日

948 次浏览

启动您的职业生涯

完成课程获得认证

开始学习
广告