R语言的xtabs函数
今天在做一个列联表独立性检验的时候,总是无法处理好要求的数据类型,偶然的机会,看到了xtabs()函数,感觉很适合用来做列联表,适合将一列数据转换成列联表。
shifou <- c("yes","yes","no","no")
xinbie <- c("nan","nv","nan","nv")
freq <- c(34,38,28,50)
(exer6_2 <- data.frame(shifou,xinbie,freq))
(count22 <- xtabs(freq~.,data = exer6_2))#这个点表示shifou + xinbie,这个和lm()用法差不多
assocstats(count22)
运行过程与结果如下:
> shifou <- c("yes","yes","no","no")#是否逃课
> xinbie <- c("nan","nv","nan","nv")#性别
> freq <- c(34,38,28,50)
> (exer6_2 <- data.frame(shifou,xinbie,freq))#“nan”表示男,“nv”表示女,yes表示逃课,no表示不逃课
shifou xinbie freq
1 yes nan 34
2 yes nv 38
3 no nan 28
4 no nv 50
> (count22 <- xtabs(freq~.,data = exer6_2))#这个数据表示性别与性别是否有关
xinbie
shifou nan nv
no 28 50
yes 34 38
> assocstats(count22)
X^2 df P(> X^2)
Likelihood Ratio 1.9830 1 0.15908
Pearson 1.9802 1 0.15937
#这个p值为0.15937大于0.05,表示与性别没有关系
Phi-Coefficient : 0.115
Contingency Coeff.: 0.114
Cramer's V : 0.115
接下来,创建一个更加难的数据集
(价格 <- rep(c("10万以下","10~20万","20~30万","30万以上"),each = 3))
(地区 <- rep(c("东部","中部","西部"),each = 1,times = 4))
(数量 <- c(20,40,40,50,60,50,30,20,20,40,20,10))
(销售情况 <- data.frame(价格,地区,数量))
(count2 <- xtabs(数量 ~ (价格 + 地区),data = 销售情况))
运算过程:
> (价格 <- rep(c("10万以下","10~20万","20~30万","30万以上"),each = 3))
[1] "10万以下" "10万以下" "10万以下" "10~20万" "10~20万" "10~20万" "20~30万"
[8] "20~30万" "20~30万" "30万以上" "30万以上" "30万以上"
> (地区 <- rep(c("东部","中部","西部"),each = 1,times = 4))
[1] "东部" "中部" "西部" "东部" "中部" "西部" "东部" "中部" "西部" "东部" "中部"
[12] "西部"
> (数量 <- c(20,40,40,50,60,50,30,20,20,40,20,10))
[1] 20 40 40 50 60 50 30 20 20 40 20 10
> (销售情况 <- data.frame(价格,地区,数量))
价格 地区 数量
1 10万以下 东部 20
2 10万以下 中部 40
3 10万以下 西部 40
4 10~20万 东部 50
5 10~20万 中部 60
6 10~20万 西部 50
7 20~30万 东部 30
8 20~30万 中部 20
9 20~30万 西部 20
10 30万以上 东部 40
11 30万以上 中部 20
12 30万以上 西部 10
> (count2 <- xtabs(数量 ~ (价格 + 地区),data = 销售情况))
地区
价格 东部 西部 中部
10~20万 50 50 60
10万以下 20 40 40
20~30万 30 20 20
30万以上 40 10 20
可以看出这个count2也构成了这个列联表的形式,接下来,使用 chisq.test()函数便可进行卡方检验
> chisq.test(count2) Pearson's Chi-squared test data: count2
X-squared = 29.991, df = 6, p-value = 3.946e-05
R语言的xtabs函数的更多相关文章
- R语言 三个函数sort();rank();order()
R语言入门,弄懂了几个简单的函数,分享一下:R语言排序有几个基本函数: sort():rank():order()sort()是对向量进行从小到大的排序rank()返回的是对向量中每个数值对应的秩or ...
- R语言——基本绘图函数
通过一个综合的例子测试绘图函数 学习的内容是tigerfish老师的教程. 第一节:基本知识 用seq函数产生100位学生的学号. > num = seq(,) > num [] [] [ ...
- R语言do.call 函数用法详解
虽然R语言有类型很丰富的数据结构,但是很多时候数据结构比较复杂,那么基本就会用到list这种结构的数据类型.但是list对象很难以文本的形式导出,因此需要一个函数能快速将复杂的list结构扁平化成da ...
- [R]关于R语言的绘图函数
1. 首先就是plot(x,y,...) 参数: x: 所绘图形横坐标构成的对象 y: 所绘图形纵坐标构成的对象 type: 指定所绘图形类型 pch: 指定绘制点时使用的符号 cex: 指定符号的大 ...
- R语言矩阵matrix函数
矩阵是元素布置成二维矩形布局的R对象. 它们包含相同原子类型的元素.尽管我们可以创建只包含字符或只逻辑值的矩阵,但是它们没有多大用处.我们使用的是在数学计算中含有数字元素矩阵. 使用 matrix() ...
- R语言列表list函数
列表是R语言中的对象,它包含不同类型的元素,比如 - 数字,字符串,向量和另一个列表等.一个列表还可以包含一个矩阵或一个函数作为它的元素.使用list()函数创建列表. 创建一个列表 下面是一个例子来 ...
- R语言(自定义函数、循环语句、管道函数)
学习R语言半年多了,以前比较注重统计方法上的学习,但是最近感觉一些基础知识也很重要.去年的参考资料是<R语言实战>,今年主要是看视频.推荐网易云课堂里的教程,很多资料都是很良心的~ 目前学 ...
- R语言的scale函数
1.数据的中心化 所谓数据的中心化是指数据集中的各项数据减去数据集的均值. 例如有数据集1, 2, 3, 6, 3,其均值为3 那么中心化之后的数据集为1-3,2-3,3-3,6-3,3-3,即:-2 ...
- R语言-编写自定义函数 ZZ
一.函数构造器 每一个R函数都包括三个部分:函数名,程序主体以及参数集合,在编写自定义R函数时,需要将三个部分各自储存在一个R对象中.这里需要使用function函数,形如: my_function& ...
随机推荐
- 面向对象 / MVC
MVC模式 : 是一种分层思想(软件设计典范) M-model 模型层 :主要负责业务代码和数据 V-view 视图层 : 主要负责展现展示 C-controller 控制层:负责分发请求返回数据 ...
- 小白学习之pytorch框架(2)-动手学深度学习(begin-random.shuffle()、torch.index_select()、nn.Module、nn.Sequential())
在这向大家推荐一本书-花书-动手学深度学习pytorch版,原书用的深度学习框架是MXNet,这个框架经过Gluon重新再封装,使用风格非常接近pytorch,但是由于pytorch越来越火,个人又比 ...
- Python笔记_第一篇_面向过程_第一部分_5.Python数据类型之字典类型(dict)
字典!在Python中字典是另一种可变容器模型,可以存储任意类型的对象.是Python存储数据类型的最高级(maybe). 特点:1. 字典的存储方式和其他类型数据略有不同,是通过键(key)和值(v ...
- SVN服务器的搭建(三)
接下来,试试用TortoiseSVN修改文件,添加文件,删除文件,以及如何解决冲突等. 添加文件 在检出的工作副本中添加一个Readme.txt文本文件,这时候这个文本文件会显示为没有版本控制的状态, ...
- 0x10 - PostgreSQL 安装之 CentOS7 + Patroni
PostgreSQL + CentOS7 + Patroni 背景 PostgreSQL 的高可用环境 环境 CentOS 7 pg01 (192.168.1.120) pg02 (192.168.1 ...
- socket 基础 X-mind
- linux epoll ET边沿触发
/***EPOLL ET 触发必须使用非阻塞,LT触发可以阻塞/非阻塞.*read 函数 非阻塞读需 忙轮寻 soket关闭返回0,循环读完数据*如果已经读完再读read返回 -1,errno=11( ...
- Q_Go1
Go语言的特点及优势 一.Go语言设计初衷(为什么设计Go语言?) 1.1.设计Go源是为了解决当时Google开发遇到的困难: 大量的C++代码,同时有引入了Java和Python 成千上万的工程师 ...
- 线性反馈移位寄存器(LFSR)-非线性反馈移位寄存器的verilog实现(产生伪随机数)
一.线性反馈移位寄存器(LFSR) 通过对事先选定的种子做运算使得人工生成的伪随机序列的过程,在实际中,随机种子的选择决定了输出的伪随机序列的不同,也就是说随机种子的选择至关重要. 产生伪随机数的方法 ...
- 快手为什么要全资收购Acfun?
近日据媒体报道,快手已完成对「Acfun」以下简称A站的全资收购.未来A站仍将保持独立品牌和独立运营以及原有团队的独立发展.近年来,A站可谓命途多舛.相比隔壁B站风风光光顺利上市且成为真正的二次元大本 ...