如果我们要为两个类别变量创建一个离散变量和表,则可以使用xtabs函数。输出将是看起来像矩阵的列联表或交叉表。例如,如果我们有一个带有两个分类列x和y以及一个计数列freq的数据帧df,则可以使用xtabs(freq〜x + y,data = df1)创建freq的总和表。
请看以下数据帧-
x1<-sample(c("A","B"),20,replace=TRUE) x2<-sample(c("I","II"),20,replace=TRUE) y1<-rpois(20,5) df1<-data.frame(x1,x2,y1) df1
输出结果
x1 x2 y1 1 A II 10 2 A I 5 3 B II 7 4 B I 5 5 B I 7 6 A II 1 7 B II 2 8 B II 3 9 B I 8 10 A I 5 11 A II 8 12 A II 4 13 B I 7 14 B II 4 15 B II 3 16 A I 6 17 A I 4 18 A I 5 19 A II 8 20 A II 7
交叉表的创建-
xtabs(y1~x1+x2,data=df1) x2
输出结果
x1 I II A 25 38 B 27 19
z1<-sample(c("G1","G2","G3","G4"),20,replace=TRUE) z2<-sample(c("S1","S2","S3"),20,replace=TRUE) y2<-sample(1:10,20,replace=TRUE) df2<-data.frame(z1,z2,y2) df2
输出结果
z1 z2 y2 1 G2 S1 3 2 G2 S2 9 3 G2 S1 7 4 G2 S3 7 5 G4 S2 3 6 G3 S2 7 7 G2 S2 10 8 G3 S3 1 9 G1 S1 3 10 G4 S1 10 11 G3 S2 4 12 G3 S2 9 13 G2 S1 6 14 G1 S3 3 15 G2 S3 9 16 G1 S3 4 17 G1 S1 9 18 G3 S1 4 19 G4 S2 9 20 G1 S1 6
交叉表的创建-
xtabs(y2~z1+z2,data=df2) z2
输出结果
z1 S1 S2 S3 G1 18 0 7 G2 16 19 16 G3 4 20 1 G4 10 12 0