R语言入门之频率表和列联表
时间:2022-07-22
本文章向大家介绍R语言入门之频率表和列联表,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在这一期我们将要学习如何针对分类变量数据创建频率表和列联表,之后在此基础之上进行独立性检验、关联度测量以及相关数据的可视化。
创建频率表和列联表
R语言提供了许多方法来创建频率表和列联表,在这里我们主要介绍三种常用的函数,它们虽有各自的特点,但大同小异,大家在学习中能细细体会出来。
1. 函数table()
#首先自己创建训练数据(这里的数据是随手编写的,不具有科学性)
#所有的数据都是分类变量(这里选择的是二分类变量)
#建立2维频率表
A <- c(rep("male",15),rep("female",20),rep("male",15))# 创建变量A
B <- c(rep("healthy",4),rep("sick",35),rep("healthy",11)) # 创建变量B
C <- c(rep("smoker",26), rep("nonsmoker",24)) # 创建变量C
mydata <- data.frame(A,B,C) # 利用以创建的变量构建数据框
attach(mydata) #固定目标数据集
mytable <- table(A,B) # 在这里,A变量的信息变成行,B变成列
mytable # 输出表格
margin.table(mytable, 1) # 对每一行的数据求和
margin.table(mytable, 2) # 对每一列的数据求和
prop.table(mytable) # 计算每格数据占总数的比例
prop.table(mytable, 1) # 以行为单位,计算其中每个变量的占比,每行求和为1
prop.table(mytable, 2) # 以列为单位,计算其中每个变量的占比,每列求和为1
当然table()函数也可以生成高维的数据表(3个及以上的变量),不过这时候使用ftable()函数可能会得到更好的展示效果:
# 创建3维频数表
mytable <- table(A, B, C)
table(A,B,C)
ftable(A,B,C)
从上述结果来看,确实是ftable()函数最后输出的效果更好。
这里需要注意一点,table()函数在生成表格的时候会默认去除NA值,如果想要保留NA,则需要添加参数exclude=NULL。如果在转换成因子时想保留NA值,则需要使用如下方法:
newfactor <- factor(oldfactor, exclude=NULL)
2. 函数xtabs()
在xtabs()函数里你可以使用公式来进行交叉制表:
# 构建3维频数表
mytable <- xtabs(~A+B+C, data=mydata)
ftable(mytable) # 使用ftable()函数简洁输出3维表格
summary(mytable) # 独立性检验(列联表的卡方检验)
加入一个变量出现在了公式的左侧,那么它就是一个计算好的频数向量
# 例如
DF <- as.data.frame(UCBAdmissions) #DF是一个已经做好的表格,Freq是统计好的频数
xtabs(Freq ~ Gender + Admit, DF) #将不同类的频数相加
3. 函数CrossTable()
CrossTable()是一个来自“gmodel”包的强大制表函数,它有很多功能选项,可以进行卡方检验,Fisher检验,McNemar检验,相关残差项的计算以及数据标准化等等。但是由于这些功能我们也可以通过R的基本函数来实现,所以这里就不对CrossTable()这个函数进行过多讲解,感兴趣的朋友可以使用方法?CrossTable()自行了解和学习。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 自建私有docker仓库-Harbor
- 前端网络高级篇(五)常见网络攻击
- 一文搞懂Cookie,Session,Token,JWT
- 前端知识点系列二:CSS
- [HTTP趣谈]支持跨域及相关cookie设置
- pytest封神之路第三步 精通fixture
- 前端网络高级篇(六)网站性能优化
- 使用Webrtc和React Js在网络上共享跨平台的点对点文件
- JSBridge小科普
- Greenplum编译安装
- 宏任务和微任务到底是什么?
- React中的setState是异步的吗?
- java安全编码指南之:堆污染Heap pollution
- ECMAScript6基础学习教程(五)对象
- React入门系列(三)创建组件