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