如何在R中向列联表添加行百分比?


要向R中的列联表添加行百分比,我们可以使用rowSums和sum函数结合表值,并与cbind函数结合使用。

例如,如果我们有一个名为TAB的表,那么我们可以使用以下命令向TAB添加行百分比:

cbind(TAB,rowSums(TAB),rowSums(TAB)/sum(TAB))

示例 1

以下代码片段创建了一个示例数据框:

Grp1<-sample(LETTERS[1:5],20,replace=TRUE)
Grp2<-sample(letters[1:5],20,replace=TRUE)
df1<-data.frame(Grp1,Grp2)
df1

创建了以下数据框

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

要基于上面创建的数据框中的Grp1和Grp2列创建列联表,请将以下代码添加到上面代码片段中:

Grp1<-sample(LETTERS[1:5],20,replace=TRUE)
Grp2<-sample(letters[1:5],20,replace=TRUE)
df1<-data.frame(Grp1,Grp2)
C_Table1<-table(df1$Grp1,df1$Grp2)
C_Table1

如果您将上面给出的所有代码片段作为单个程序执行,它将生成以下输出:

  a b c d e
A 0 3 1 2 0
B 0 1 0 2 0
C 0 1 1 0 0
D 2 0 0 1 0
E 0 1 1 2 2

要找到上面创建的数据框中C_Table1的行百分比,请将以下代码添加到上面代码片段中:

Grp1<-sample(LETTERS[1:5],20,replace=TRUE)
Grp2<-sample(letters[1:5],20,replace=TRUE)
df1<-data.frame(Grp1,Grp2)
C_Table1<-table(df1$Grp1,df1$Grp2)
cbind(C_Table1,rowSums(C_Table1),rowSums(C_Table1)/sum(C_Table1))

输出

如果您将上面给出的所有代码片段作为单个程序执行,它将生成以下输出:

  a b c d e
A 0 3 1 2 0 6 0.30
B 0 1 0 2 0 3 0.15
C 0 1 1 0 0 2 0.10
D 2 0 0 1 0 3 0.15
E 0 1 1 2 2 6 0.30

示例 2

以下代码片段创建了一个示例数据框:

f1<-sample(1:4,20,replace=TRUE)
f2<-sample(c(5,10,15,20),20,replace=TRUE)
df2<-data.frame(f1,f2)
df2

创建了以下数据框

  f1 f2
1  1 20
2  2  5
3  4  5
4  3 20
5  1 15
6  2  5
7  1 10
8  4  5
9  1  5
10 1 10
11 2 15
12 3 20
13 4  5
14 1 10
15 4  5
16 2 10
17 2 10
18 2 15
19 1  5
20 4 15

要基于上面创建的数据框中的f1和f2列创建列联表,请将以下代码添加到上面代码片段中:

f1<-sample(1:4,20,replace=TRUE)
f2<-sample(c(5,10,15,20),20,replace=TRUE)
df2<-data.frame(f1,f2)
C_Table2<-table(df2$f1,df2$f2)
C_Table2

如果您将上面给出的所有代码片段作为单个程序执行,它将生成以下输出:

  5 10 15 20
1 2  3  1  1
2 2  2  2  0
3 0  0  0  2
4 4  0  1  0

要找到上面创建的数据框中C_Table2的行百分比,请将以下代码添加到上面代码片段中:

f1<-sample(1:4,20,replace=TRUE)
f2<-sample(c(5,10,15,20),20,replace=TRUE)
df2<-data.frame(f1,f2)
C_Table2<-table(df2$f1,df2$f2)
cbind(C_Table2,rowSums(C_Table2),rowSums(C_Table2)/sum(C_Table2))

输出

如果您将上面给出的所有代码片段作为单个程序执行,它将生成以下输出:

  5 10 15 20
1 2  3  1  1 7 0.35
2 2  2  2  0 6 0.30
3 0  0  0  2 2 0.10
4 4  0  1  0 5 0.25

更新于: 2021年11月5日

2K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告