R语言的xtabs函数

今天在做一个列联表独立性检验的时候,总是无法处理好要求的数据类型,偶然的机会,看到了xtabs()函数,感觉很适合用来做列联表,适合将一列数据转换成列联表。

1shifou <- c("yes","yes","no","no") 2xinbie <- c("nan","nv","nan","nv") 3freq <- c(34,38,28,50) 4(exer6_2 <- data.frame(shifou,xinbie,freq)) 5(count22 <- xtabs(freq~.,data = exer6_2))#这个点表示shifou + xinbie,这个和lm()用法差不多 6assocstats(count22)

  运行过程与结果如下:

1> shifou <- c("yes","yes","no","no")#是否逃课 2> xinbie <- c("nan","nv","nan","nv")#性别 3> freq <- c(34,38,28,50) 4> (exer6_2 <- data.frame(shifou,xinbie,freq))#“nan”表示男,“nv”表示女,yes表示逃课,no表示不逃课 5 shifou xinbie freq 61 yes nan 34 72 yes nv 38 83 no nan 28 94 no nv 50 10> (count22 <- xtabs(freq~.,data = exer6_2))#这个数据表示性别与性别是否有关 11 xinbie 12shifou nan nv 13 no 28 50 14 yes 34 38 15> assocstats(count22) 16 X^2 df P(> X^2) 17Likelihood Ratio 1.9830 1 0.15908 18Pearson 1.9802 1 0.15937#这个p值为0.15937大于0.05,表示与性别没有关系 19 20Phi-Coefficient : 0.115 21Contingency Coeff.: 0.114 22Cramer's V : 0.115

  接下来,创建一个更加难的数据集

1(价格 <- rep(c("10万以下","10~20万","20~30万","30万以上"),each = 3)) 2(地区 <- rep(c("东部","中部","西部"),each = 1,times = 4)) 3(数量 <- c(20,40,40,50,60,50,30,20,20,40,20,10)) 4(销售情况 <- data.frame(价格,地区,数量)) 5(count2 <- xtabs(数量 ~ (价格 + 地区),data = 销售情况))

  运算过程:

1> (价格 <- rep(c("10万以下","10~20万","20~30万","30万以上"),each = 3)) 2 [1] "10万以下" "10万以下" "10万以下" "10~20万" "10~20万" "10~20万" "20~30万" 3 [8] "20~30万" "20~30万" "30万以上" "30万以上" "30万以上" 4> (地区 <- rep(c("东部","中部","西部"),each = 1,times = 4)) 5 [1] "东部" "中部" "西部" "东部" "中部" "西部" "东部" "中部" "西部" "东部" "中部" 6[12] "西部" 7> (数量 <- c(20,40,40,50,60,50,30,20,20,40,20,10)) 8 [1] 20 40 40 50 60 50 30 20 20 40 20 10 9> (销售情况 <- data.frame(价格,地区,数量)) 10 价格 地区 数量 111 10万以下 东部 20 122 10万以下 中部 40 133 10万以下 西部 40 144 10~20万 东部 50 155 10~20万 中部 60 166 10~20万 西部 50 177 20~30万 东部 30 188 20~30万 中部 20 199 20~30万 西部 20 2010 30万以上 东部 40 2111 30万以上 中部 20 2212 30万以上 西部 10 23> (count2 <- xtabs(数量 ~ (价格 + 地区),data = 销售情况)) 24 地区 25价格 东部 西部 中部 26 10~20万 50 50 60 27 10万以下 20 40 40 28 20~30万 30 20 20 29 30万以上 40 10 20

  可以看出这个count2也构成了这个列联表的形式,接下来,使用 chisq.test()函数便可进行卡方检验

1> chisq.test(count2) 2 3 Pearson's Chi-squared test 4 5data: count2 6X-squared = 29.991, df = 6, p-value = 3.946e-05
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )

Redis 6.0 正式版终于发布了!除了多线程还有什么新功能?

!(https://oscimg.oschina.net/oscnet/b8c8b22b9f44bd806c26b486e1893a263a4.jpg)这是我的第56篇原创文章!(https://oscimg.oschina.net/oscnet/8bf00bc92f6a1cd46596ee44bac64a801ae.pn