如何为R数据帧中的两个类别变量创建离散变量和表?

如果我们要为两个类别变量创建一个离散变量和表,则可以使用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