如何将R中的两个因子列和一个数字列的数据帧转换为表?

当我们有两个因子列和一个数字列时,我们可以基于因子列为数字值的总数创建一个列联表。这可以借助基本R中的xtabs函数来完成。例如,如果我们有一个名为df的数据框,其中包含两个因子列(例如f1和f2)和一个数字列(例如Y),则可以创建df的列联表通过使用命令xtabs(Y〜f1 + f1,df)。

例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

以上是 如何将R中的两个因子列和一个数字列的数据帧转换为表? 的全部内容, 来源链接: utcz.com/z/319779.html

回到顶部