如何在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
广告