如果我们在R数据帧中有两个分类列以及一个数字列,则可以在聚合函数的帮助下使用分类列的组合来找到数字列的均值。例如,如果数据帧df包含数字列X和两个分类列C1和C2,则可以使用以下命令找到C1和C2组合的X均值-
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
求C1和C2的组合的X的均值-
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
求C1和C2组合的Y的均值-
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