版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章数据管理2.1数据结构2.8数据排序2.2数据的输入和输出2.9数据集取子集2.3函数2.10数据集合并2.4创建新变量2.11数据整合与重构2.5变量重编码2.12
练习案例2.6变量重命名2.13小结2.7数据类型的查看和转换第2章数据管理数据管理在R语言中起着非常重要的作用。通过数据管理,用户可以对数据进行有效的整理和处理,为统计分析和建模做好准备。本章将详细介绍R语言中各种常用的基本数据结构和数据管理操作。学习本章后,读者将会对R语言中的基本数据结构有基本的理解和认识,并且能够应对各种数据管理的挑战。2.1数据结构2.1数据结构数据结构是数据的容器,也是R语言中数据管理的基本单元。数据的结构不仅决定了如何进行数据的存储、组织和访问,还影响着数据管理的性能和效率。2.1.1基本数据结构速览R语言中的基本数据结构包括向量、因子、矩阵、数据框、数组、列表等(演示)。数据通常按其维度(一维、二维或三维)和是否同质(所有元素必须为相同类型或元素可以为不同类型)进行组织。元素(element)是存储在数据结构中的单个值或对象。在一维数据结构中,元素按顺序依次排列;在二维数据结构中,元素以带有行和列的表格格式排列;在多维数据结构中,元素按多维网格排列。2.1数据结构2.1.2向量1.向量的结构向量是一维数组,可存储数值型(numeric)、字符型(character)、逻辑型(logical)数据。单个向量中的元素必须是相同类型的信息(演示)。2.访问向量使用索引可访问向量中的元素。索引包括整数索引、逻辑索引和字符索引。如果向量具有名称属性,则字符索引返回具有匹配名称的元素(演示)。2.1数据结构2.1.3因子因子是一种表示类别的向量,可分为有序因子和无序因子。有序因子中各元素存在固有的顺序;无序因子则没有这种顺序。因子决定了数据的呈现和分析方式,它在R语言中非常重要。1.因子的结构factor():创建因子。在默认情况下,factor()将向量转换为无序因子,即没有固有的顺序或等级。要想创建有序因子,则需要指定该函数的两个参数ordered=TRUE和levels=c(“lev1”,“lev2”,…)。ordered参数指定因子是有序的,而levels参数指定从最低到最高的级别顺序。访问因子元素的方式与访问向量元素的相似(演示)。2.判断因子is.factor():判断某向量是否为因子(演示);is.ordered():检查因子是否有序(演示)。2.1数据结构2.1.4矩阵矩阵是一种二维数据结构,由按行和列排列的矩形元素组成,其每个元素都为相同的类型(数值型、字符型、逻辑型)。矩阵不仅可在需要对数据进行数学运算时使用,还可用于表示线性方程组、图形和其他数学对象。1.矩阵的结构matrix():将输入的向量重塑为具有指定行数和列数的矩阵(演示)。2.访问矩阵使用行和列索引可访问矩阵中的元素。访问特定行和列元素的命令是matrix[row,column]。若要访问整行,则可以使用matrix[row,];若要访问整列,则可以使用matrix[,column](演示)。使用单个索引访问矩阵中的元素。当使用单个索引时,矩阵中的元素被视为在一个向量中,按列顺序排列(演示)。2.1数据结构2.1.5数据框数据框是一种二维数据结构,主要用于存储和处理表格数据。数据框与矩阵类似,但它可以拥有不同类型的列,如单个数据框可以由数值列、字符列、因子列等构成。数据表(datatable)是数据框的扩展,其属于data.table程序包中的数据结构,需要下载和加载data.table程序包后才可进行使用。data.table程序包具有强大的性能优势,包括快速的文件读写、灵活的数据处理和聚合、简洁的语法等,可用于高效处理和分析数据。与base程序包中的数据框相比,数据表在处理大型数据集时具有更高的性能和更低的内存消耗。data.table程序包采用基于哈希的数据存储和索引方法,从而能快速实现数据筛选、汇总和合并等操作。此外,data.table程序包还提供了丰富的函数,使用户可以更加灵活地进行数据操作和计算。2.1数据结构2.1.5数据框1.数据框和数据表的结构数据框和数据表都由一系列元素长度相等且允许数据类型不同的向量(列)组成,每一行数据都为一个观测(演示)。2.访问数据框和数据表访问数据框和数据表的元素、行、列与访问矩阵的方式基本相同。相比通过列整数索引,通过列名称索引访问元素是一种更明确且易读的方式(演示)。3.数据框和数据表的运算效率相比数据框,数据表提供了更快的索引和数据处理功能,在处理大型数据集时具有更高的运算效率(演示)。2.1数据结构2.1.6数组数组是R语言中的一种多维数据结构,它可以在三个维度中存储相同类型的数据。1.数组的结构在数组中,数据以矩阵的形式存储。数组可以被视为矩阵的集合,数组中的每个矩阵都按行和列组织。例如,将sex_ft、edu_ft两个因子向量集合为一个数组,使用dim参数设置数组的行数、列数和层数(演示)。2.访问数组array[row,col,matrix]:可指定要访问元素所在的行、列和矩阵(演示)。2.1数据结构2.1.7列表列表是R语言中最复杂的数据类型,是各种数据类型的有序集合,其可包含单个或若干元素、向量、矩阵、数组、数据框、数据表、列表。1.列表的结构list():把同质或异质的数据组合成一个列表(演示)。2.访问列表对于列表,当使用单个方括号“[]”访问列表的元素时,返回结果是包含该元素的子列表;当使用双方括号“[[]]”访问列表的元素时,返回结果是该元素本身(演示)。除了使用数字索引访问列表的元素,如果列表的元素具有名称,则还可以使用名称索引(演示)。2.1数据结构2.1.8数据类型的层次结构在R语言中,不同类型的元素存在层次结构,从最低到最高依次为:逻辑值(logical)、整数(integer)、数值(double)、复数(complex)、字符(character)、列表(list)。除了数据框、数据表与列表,在其他数据结构中,所有元素必须为相同类型(演示)。如果将不同类型的元素组合成向量,则结果向量的类型将被强制转换为元素中存在的最高层次类型。2.2数据的输入与输出2.2数据的输入和输出2.2.1数据的输入数据分析的第一步是导入待分析的数据。使用data.table程序包中的fread()能够导入多种文件类型的数据,如CSV文件(.csv)、Excel文件(.xlsx)、SAS文件(.sas7bdat)等,文件导入后使用str()可查看每个变量的数据类型(演示)。与使用base程序包中的read.csv()读取数据文件相比,使用fread()的优势在于读取速度非常快,特别是在读取大数据文件时(演示)。2.2.2数据的输出data.table程序包中的fwrite()用于将数据从R语言中导出到文件里,同样地,与base程序包中的write.csv()相比,fwrite()的保存速度更快(演示)。2.3函数2.3函数2.3.1概念R语言中函数(function)是十分重要的操作方法,形式为function_name(),括号里是函数的参数,通过设置参数,运行命令后可得到相应的结果。data.table程序包中的order()能快速对数据进行升/降序排列(演示)。2.3.2数据管理常见函数在R语言编程中包含着不同种类和功能的函数,表2.4、表2.5、表2.6和表2.7分别列出了4种不同类型的常用函数。使用abs()、sqrt()、ceiling()、floor()可进行常规数学运算,使用mean()和sd()分别计算data1中研究对象年龄的平均值与标准差(演示)。分布函数用于生成特征已知的模拟数据,以及在统计函数中计算概率值(演示)。stringr程序包还提供了许多函数来帮助用户进行字符处理(演示)。2.3函数2.3.3函数查询仅理解函数的意义可能不足以完全掌握其作用,通过查询函数可快速了解函数的定义和用途、各种参数的解释与函数源代码。在“打印、查看器、包和帮助”窗口“Help”选项卡的搜索栏中直接输入想要了解的函数名称,按回车键,窗口即可呈现函数的说明,如输入“chisq.test”进行查询(演示)。在“控制台”窗口的“Console”选项卡中输入“?函数名称”,“打印、查看器、包和帮助”窗口的“Help”选项卡中可显示该函数的说明(演示)。2.4创建新变量2.4创建新变量2.4.1变量命名规则和赋值方式变量名称只能由字母、数字、下画线组成,不能含有运算符。“<-”为赋值符号,表示将后者赋值给前面的变量(演示)。+、*、/、^等为常见的运算符,不能在变量名称中使用(演示)。变量名称不能以数字开头(演示)。2.4.2常用的运算符R语言中常用的运算符包括算术运算符、逻辑运算符、关系运算符等,熟悉这些运算符在数据管理和分析过程中非常重要(演示)。筛选出data1中年龄大于或等于70岁且小于85岁的研究对象,可用逻辑运算符&来表达(演示)。若想进一步剔除教育状况为高中及以上的人群,可运用逻辑运算符!来表达(演示)。2.4创建新变量2.4.3data.table程序包利用data.table程序包可以对大数据信息进行快速访问,并对行和列进行快速运算,进而高效地创建出新变量。data.table程序包提供了十分简洁的语法(演示)。2.5变量重编码2.4变量重编码在实际操作中,可以通过创建新变量的方式对现有变量进行转换,也可以通过变量重编码来实现。将连续型变量转换为分类变量,如年龄、身体质量指数等(演示)。将错误值更改为正确值或删除,筛选出缺失值重新编码或另作处理(演示)。基于原数据定义新的变量,如根据收缩压和舒张压定义新的变量,将研究对象划分为正常、低血压或高血压(演示)。对于日期形式的数据,使用as.Date()将其转换为以数值形式存储的时间变量(演示)。2.6变量重命名2.6变量重命名有时变量名可能不够直观或存在歧义,需要对其进行修改。通过names()查看变量名称(演示)。data.table程序包中的setnames()可用于变量重命名(演示)。直接赋值新的变量名也可重命名变量(演示)。除了上面的3种方法,还可以通过fix(data1)语句调用一个交互式编辑器来修改变量名(演示)。2.7数据类型的查看和转换2.7数据类型的查看和转换2.7.1查看数据类型str()能够紧凑地显示任意对象的内部结构,其函数结果简洁地展示了数据的内部结构、内部嵌套的数据类型和数据摘要(演示)。在R语言中,可以使用class()查看数据类型。与str()不同的是,class()仅能返回某个对象本身的数据类型(演示)。base程序包中的is.datatype系列函数能够用于数据类型的判断(演示)。2.7.2数据类型的转换在R语言中,通常使用as.datatype系列函数对数据类型进行转换,as.datatype系列函数与is.datatype系列函数类似,根据数据类型的不同,有多种函数(演示)。2.8数据排序2.8数据排序2.8.1sort()sort()用于对数字、复数、字符或逻辑向量等R对象进行排序,其会对数据本身进行升序或降序排列,并按照大小顺序返回数据(演示)。2.8.2rank()rank()用于对数据本身进行升序排列,按照原本数据的位置顺序返回其对应的位次(演示)。2.8.3order()order()用于对数据本身进行排序,按照大小顺序返回该值在原数据中的位置索引(演示)。2.8.4setorder()使用data.table程序包中的setorder()可以对数据表进行快速排序(演示)。2.9数据取子集2.9数据取子集2.9.1基于变量提取、删除子集与访问数据表信息相同,可以通过“[]”提取子集。例如,在流行病学实际分析的过程中,常常需要根据分析需求,提取分析所需的患者信息(演示)。删除子集与提取子集相反,对于通过c()选择观测信息的,只需要在列数值之前添加“-”,就能把不需要的列删除;对于删除某观测变量的特定值,需要通过subset()进行删除(演示)。2.9.2基于条件取子集在处理大数据时,使用行号或列号提取、删除子集的效率往往比较低,如果清晰了解所需要提取的子集信息,则可以基于条件提取子集,提高效率(演示)。2.9数据取子集2.9.3保留非重复行当数据中出现重复录入的情况时,需要提取唯一数据进行分析。duplicated()用于判断某一列是否重复,并返回逻辑值(演示)。
unique()用于直接保留唯一数据(演示)。2.9.4基于条件取子集complete()和filter()可用于删除存在缺失值的行,其中complete(data/column)可以直接删除存在缺失值的数据或行,而filter(data,!is.na(columnname))则需要选择存在缺失值的列,并筛选出该列没有缺失值的数据(演示)。2.10数据集合并2.11数据整合与重构2.11.1转置转置,也就是反转行和列。通过t()对一个矩阵或者数据表进行转置(演示)。2.11.2分类汇总在R语言中可以将数据依据一个或多个变量并按一个预先定义函数进行分类汇总,该操作可通过aggregate()实现(演示)。aggregate()是base程序包提供的分类汇总基础函数,在实际数据处理中可使用data.table程序包中的data.table()快速实现分类汇总(演示)。2.11数据整合与重构2.11数据集合并2.10.1简单合并数据管理中常需要对某一数据表追加观测,或者将不同数据表进行纵向合并,在R语言中可通过rbind()实现(演示)。当需要向某一数据表中添加变量,或者需要对不同数据表进行横向合并时,可利用cbind()实现(演示)。2.10.2匹配合并merge()是一个非常强大的函数。在实际应用过程中,患者数据往往是通过id进行收集的,因此在数据合并过程中可以通过id进行匹配,并且可以选择感兴趣的数据进行合并(演示)。通过使用full_join()、left_join()、right_join(),可以根据需要保留未被匹配的数据(演示)。2.11数据整合与重构2.11.3融合数据融合是将数据按以下格式进行重构,即每个测量项目都独占一行,其他列信息保持不变,该操作可通过data.table程序包中的melt()实现(演示)。2.11.4重铸data.table程序包中dcast()可将“长格式”数据按照提供的公式进行重铸,将“长格式”数据转换为“宽格式”数据,使行数变少而列数增多(演示)。除了mean()、median()、sum()这些一般的计算函数,fun.aggregate还可以写入许多功能,如使用list()将多个计算函数组合,或者使用function()自定义更为复杂的函数(演示)。2.12练习案例2.12练习案例以下example.data数据框中有100位老年人的基本信息和健康体检结果,包括编号、性别、民族、年龄、教育程度,是否患有高血压、糖尿病或高脂血症,以及腰围,部分数据如表所示。请以该数据集为例,结合本章内容,完成以下操作:编号性别民族年龄教育程度高血压糖尿病高脂血症腰围1男性汉族[65,70)高中以上是否否852女性汉族[75,80)高中以下是否否803女性汉族[65,70)高中以上是否否804女性汉族[80,200]高中以上否否否815男性汉族[65,70)高中以下是是否866女性汉族[80,200]高中以下是否是85...........................练习案例数据框中的部分数据2.12练习案例将男性腰围大于或等于90cm,女性腰围大于或等于85cm定义为腹型肥胖,构造新的一列变量。将新构造的列名称改为“腰围分类”。将“编号”“腰围”两列数据转换为数值型,其他列数据转化为因子。将数据框按腰围由小到大排列。在数据框中取“编号”“高血压”“糖尿病”“高脂血症”4列,构建新数据框example.data1。构造新数据框example.data2,其中包含各体检对象的体检地点和身高信息,并以编号为索引,合并example.data数据框和example.data2数据框。将数据框融合为“长格式”,每行表示各体检对象的每个测量项目结果。汇总不同性别和体检地点的体检人群的腰围与身高的平均值。2.13小结本章介绍了R语言中多种多样的数据类型、数据的输入和输出、处理数据的常用函数、新变量的创建、变量重编码和重命名、数据类型的转换、数据排序、数据集取子集、数据集合并,以及数据整合与重构等内容。数据的准备和管理是数据分析的基础。只有在对数据进行充分清洗和整理的基础上,才能进行有效的数据分析和挖掘,从而得出有意义的结论。因此,掌握好数据处理的技巧和方法,对于提高数据分析的效率和准确性至关重要。2.13小结2.13小结函数所属程序包作用主要用法factor()base将数据转换为因子factor(x=character(),levels,labels)matrix()base创建矩阵matrix(data,nrow,ncol,byrow,dimnames)data.frame()base创建数据框data.frame(...,s,check.rows,s,s,stringsAsFactors)data.table()data.table将数据框转换为数据表data.table(data)array()base创建数组array(data,dim,dimnames)list()base创建列表list(...)read.csv()utils导入CSV文件read.csv(file,header,sep,quote,dec,fill,comment.char,...)fread()data.table导入数据fread(file,header,sep,quote,dec,encoding)fwrite()data.table导出数据fwrite(data,file)order()base对数据进行排序order(...,na.last,decreasing,method)absbase求绝对值abs(x)sqrtbase求平方根sqrt(x)本章重要函数2.13小结函数所属程序包作用主要用法ceilingbase不小于x的最小整数ceiling(x)floorbase不大于x的最大整数floor(x)truncbase向0的方向截取x中的整数部分trunc(x)roundbase将x舍入为指定位的小数round(x,digits)signifbase将x舍入为指定的有效数字位数signif(x,digits)sin/cos/tanbase正弦/余弦/正切sin(x)/cos(x)/tan(x)logbase以x取以n为底的底数log(x,base)expbase求指数exp(x)meanbase求平均值mean(x)medianstats求中位数median(x)sdstats求标准差sd(x)varstats求方差var(x)quantilestats求分位数quantile(x,probs)rangebase求值域range(x)本章重要函数2.13小结函数所属程序包作用主要用法sdstats求标准差sd(x)varstats求方差var(x)quantilestats求分位数quantile(x,probs)rangebase求值域range(x)sumbase求和sum(x)minbase求最小值min(x)maxbase求最大值max(x)scalebase以数据对象按列进行中心化或标准化scale(x,center,scale)diffbase滞后差分diff(x,lag,differences)subbase正则表达式函数,用于替换sub(pattern,replacement,x,ignore.case,perl,fixed,useBytes)pastebase连接字符串paste(...,sep,collapse,recycle0)ncharbase统计字符串长度nchar(x,type,allowNA,keepNA)substringbase截取字符串substring(text,first,last)strsplitbase分隔符拆分字符串strsplit(x,split,fixed,perl,useBytes)本章重要函数2.13小结函数所属程序包作用主要用法lapplybase对向量、列表或数据框执行操作,并返回相同长度的列表对象lapply(X,FUN,...)withinbase计算数据环境中的表达式within(data,expr,...)namesbase重命名变量names(x)renamedplyr重命名列rename(.data,...)strutils查看数据类型str(object,...)typeofbase查看数据类型typeof(x)is.datatypebase数据类型的判断is.factor(x)/is.numeric(x)/is.charac
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学信息科技人教版(新教材)二年级全一册第一单元 数字健康伴我行 教学设计
- 《高处作业吊篮安装检验评定标准》
- 鞋柜通风设计与异味控制
- DB43T 3095-2024 斜行电梯安全评估细则
- 机械职业规划初探
- 2026陕西宝鸡市凤翔区中医医院招聘12人笔试模拟试题及答案解析
- 2026江苏南通建交建筑工程有限公司招聘1人考试参考题库及答案解析
- 广发银行长沙分行2026年度春季校园招聘笔试备考试题及答案解析
- 2026四川经准特种设备检验有限公司第一次招聘急需紧缺专业技术人员补充考试备考试题及答案解析
- 2026青海黄南州泽库县麦秀镇卫生院招聘2人笔试备考题库及答案解析
- 2025向量化与文档解析技术加速大模型RAG应用
- 辅警心理辅导讲座课件
- 系统性红斑狼疮护理疑难病例讨论
- 胖东来店长培训课件
- 丛林寺院管理制度
- 库房人员安全试题及答案
- 2024年嘉兴市属国有企业招聘考试真题
- 人音版七年级下册《表花》课件
- 中药羌活简介
- 施工工地汛期安全教育培训
- 湘教版地理八年级下册 期中综合测试卷(含答案)
评论
0/150
提交评论