如何从 R 数据框中创建带有边缘总和的列联表?


列联表中边缘的行和列的总和始终很有用,因为它们用于不同类型的计算,例如优势比、概率等。如果 R 数据框具有因子列,则可以为该数据框创建列联表,这可以使用 `addmargins` 函数完成。

示例

考虑以下数据框:

 实时演示

x1<-sample(LETTERS[1:4],20,replace=TRUE)
x2<-sample(c("India","USA","China"),20,replace=TRUE)
df1<-data.frame(x1,x2)
df1

输出

   x1 x2
1 B China
2 B India
3 B India
4 D India
5 B India
6 D   USA
7 D   USA
8 A   USA
9 D   USA
10 C India
11 B China
12 D China
13 D China
14 A India
15 D   USA
16 A China
17 D India
18 A China
19 B China
20 A India

为 x1 和 x2 创建带有边缘总和的列联表:

示例

>CT1<-addmargins(table(df1$x1,df1$x2),c(1,2)) 
>CT1

输出

  China India USA Sum
A   2    2     1   5
B   3    3     0   6
C   0    1     0   1
D   2    2     4   8
Sum 7    8     5  20

让我们看看另一个例子:

示例

 实时演示

y1<-sample(c("John","Christina","Michael","Sona"),20,replace=TRUE)
y2<-sample(c("1","2","3","4"),20,replace=TRUE)
df2<-data.frame(y1,y2)
df2

输出

    y1        y2
1 Sona        2
2 John        3
3 John        4
4 Sona        2
5 Christina   4
6 Michael     2
7 Michael     4
8 John        1
9 John        4
10 John       1
11 Michael    3
12 Sona       1
13 Sona       2
14 Michael    2
15 Michael    2
16 Michael    1
17 Michael    3
18 Christina  1
19 Christina  4
20 Sona       1

为 y1 和 y2 创建带有边缘总和的列联表:

示例

>CT2<-addmargins(table(df2$y1,df2$y2),c(1,2)) 
>CT2

输出

          1  2  3  4  Sum
Christina 1  0  0  2   3
John      2  0  1  2   5
Michael   1  3  2  1   7
Sona      2  3  0  0   5
Sum       6  6  3  5  20

更新于:2020年10月8日

2K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始
广告
© . All rights reserved.