如何用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
猜你喜欢