如何在R中将包含两个因子列和一个数值列的数据框转换为表格?


当我们有两个因子列和一个数值列时,我们可以根据因子列创建数值值的总计数列联表。这可以使用base R中的xtabs函数完成。例如,如果我们有一个名为df的数据框,其中包含两个因子列,例如f1和f2,以及一个数值列,例如Y,则可以使用命令xtabs(Y~f1+f2,df)创建df的列联表。(注意原文中f1+f1应为f1+f2)

示例1

考虑以下数据框:

在线演示

> x1<-sample(LETTERS[1:4],20,replace=TRUE)
> x2<-sample(letters[1:4],20,replace=TRUE)
> y1<-rpois(20,5)
> df1<-data.frame(x1,x2,y1)
> df1

输出

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

为df1中的数据创建列联表:

> xtabs(y1~x1+x2,df1)
x2

输出

x1 a b c  d
A  3 0 6  0
B  5 0 14 5
C  0 8 4  14
D  0 3 29 11

示例2

在线演示

> var1<-sample(c("G1","G2","G3","G4"),20,replace=TRUE)
> var2<-sample(c("C1","C2","C3","C4"),20,replace=TRUE)
> Response<-rpois(20,2)
> df2<-data.frame(var1,var2,Response)
> df2

输出

   var1 var2 Response
1  G3   C2    1
2  G2   C4    4
3  G4   C2    3
4  G2   C3    4
5  G3   C4    1
6  G3   C3    1
7  G4   C1    1
8  G1   C4    3
9  G2   C3    1
10 G2   C1    0
11 G3   C1    1
12 G3   C4    0
13 G1   C1    2
14 G3   C1    1
15 G4   C1    3
16 G1   C2    4
17 G2   C4    2
18 G4   C4    4
19 G2   C4    1
20 G3   C3    0

为df2中的数据创建列联表:

> xtabs(Response~var1+var2,df2)

输出

var2
var1 C1 C2 C3 C4
G1   2  4  0  3
G2   0  0  5  7
G3   2  1  1  1
G4   4  3  0  4

更新于:2021年3月5日

434 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告