楼主: aiqingjiel
7360 1

[学习分享] 创建和处理多维列联表--xtabs/prop.table/margin.table/addmargins/CrossTable/ftable [推广有奖]

  • 0关注
  • 1粉丝

已卖:63份资源

本科生

26%

还不是VIP/贵宾

-

威望
0
论坛币
267 个
通用积分
7.1985
学术水平
9 点
热心指数
9 点
信用等级
4 点
经验
564 点
帖子
43
精华
0
在线时间
88 小时
注册时间
2009-12-22
最后登录
2024-8-7

楼主
aiqingjiel 发表于 2018-9-2 22:37:49 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
【xtabs】函数形式:

xtabs(formula = ~., data = parent.frame(), subset, sparse = FALSE,      na.action, exclude = c(NA, NaN), drop.unused.levels = FALSE)
示例: 1.png

margin.table】按margins定义的边际列表计算表中条目的和margin.table(x, margin = NULL)
> margin.table(mytable,1) ##1:表示按行求和
a
0.333333333333333           0.5                 1               Inf               
10                10                10                10

> a <- rep(c(NA, 1/0:3), 10)
> b<-rep(1:5,10)
> mytable<-xtabs(~a+b)
> margin.table(mytable,2) ##2:按列求和
b
2  3  4  5
10 10 10 10
【prop.table】按margins定义的边际列表将表中条目表示为分数形式
prop.table(x, margin = NULL)
> a <- rep(c(NA, 1/0:3), 10)
> b<-rep(1:5,10)
> mytable<-xtabs(~a+b)
> prop.table(mytable)   ##计算各元素占整体的比例        
2.png            

> prop.table(mytable,1) ## 1:表示行中各元素值/各行中数据来计算;  
3.png
              
>library(vcd)
>attach(Arthritis)
>mytable<-table(Improved)
>prop.table(mytable)*100
>mytable1<-xtabs(~Treatment+Improved)
>mytable1
4.png

> prop.table(mytable1,1) ## 1:表示行中各元素值/各行中数据来计算;
   5.png       

> prop.table(mytable1,2)## 2:表示列中各元素值/各列中数据来计算;
6.png

【addmargins】为表格添加边际和
addmargins(A, margin = seq_along(dim(A)), FUN = sum, quiet = FALSE)
> a <- rep(c(NA, 1/0:3), 10)
> b<-rep(1:5,10)
> mytable<-xtabs(~a+b)
>addmargins(prop.table(mytable)) ## 在行列维度均增加求和项;
    7.png                

library(vcd)
attach(Arthritis)
mytable<-table(Improved)
prop.table(mytable)*100
mytable1<-xtabs(~Treatment+Improved)
addmargins(prop.table(mytable1,2),1) ##margin取值1,行增加求和项,按列值求和;   
8.png    

> addmargins(prop.table(mytable1,2),2) ##margin取值2,列增加求和项,按行值求和;   
9.png

CrossTable
CrossTable(x, y, digits=3, max.width = 5, expected=FALSE, prop.r=TRUE, prop.c=TRUE,           prop.t=TRUE, prop.chisq=TRUE, chisq = FALSE, fisher=FALSE, mcnemar=FALSE,           resid=FALSE, sresid=FALSE, asresid=FALSE,           missing.include=FALSE,           format=c("SAS","SPSS"), dnn = NULL, ...)
参数说明:
x:向量或矩阵。如y被指定,则x比为向量;
y:矩阵或数据框中的向量;
digits:保留小数点后的位数,默认是3位;
max.width:默认值5.在1×N表的情况下,默认值将是水平打印输出。如果列的数量超过最大宽度,则表将被包装为每个最大宽度列的连续增量。如果需要单列垂直表,将最大宽度设置为1。
expected:默认取值false。如取值true,增加输出Expected N,及皮尔逊--卡方检验输出;
> CrossTable(Arthritis$Treatment,Arthritis$Improved,expected = TRUE)   
10.png
11.png

prop.r:默认取值true,输出行比例(N / Row Total
prop.c:默认取值true,输出列比例(N / Col Total);
prop.t:默认取值true,输出表格总体比例(N / Table Total);
pro.chisq:默认取值true,输出每个各因子的卡方分布(Chi-square contribution );
chisq:默认取值false,如取值true,则输出卡方检验结果;
fisher:默认取值false,如取值true,则输出fisher精确检验结果;
mcnemar:如取值true,则输出mcnemar test;
resid:如取值true,则输出包含pearson残差;
sresid:如取值true,则输出包含标准残差;
missing.include:如取值true,则输出不用的因子水平;
format:取值SAS、SPSS,输出的格式;
dnn:输出结果的维度名称;
> CrossTable(Arthritis$Treatment,Arthritis$Improved,expected = TRUE,+ dnn=c("Treatment","Improved"))   
13.png
14.png
【ftable】创建三维列联表

ftable(x, ...)## Default S3 method:ftable(..., exclude = c(NA, NaN), row.vars = NULL,col.vars = NULL)
参数说明:
row.vars:取值整数向量,或用于给出列联表中行变量的名称的字符向量;
x <- ftable(mtcars[c("cyl", "vs", "am", "gear")])  ## 默认状态下,是以前三个因子为行变量创建三维列联表;
x
15.png
ftable(x, row.vars = c(1, 2))

16.png

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝


已有 1 人评分论坛币 收起 理由
cheetahfly + 30 鼓励积极发帖讨论

总评分: 论坛币 + 30   查看全部评分

本帖被以下文库推荐

  • · R学习|主题: 262, 订阅: 161

沙发
啊啊啊啊啊吖 发表于 2018-9-28 11:22:39
真的超感谢R社区这么多大佬愿意分享自己的学习,如果代码有自己注释就更好啦,我们这些小白学习起来更轻松

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 08:16