今日内容
一、数据结构
二、数据清洗
2.1 缺失值处理
2.2变量调整
2.3日期值处理
2.4数据框管理
在进行数据处理之前,我们首先需要了解数据的组合结构
关于数据结构
【1】简单理解:把独立的数据,整合存储到一起的形式(如下图)
【2】数据结构从简单到复杂的顺序如下:
向量<矩阵
向量:一行数据,每个数据的数据类型相同
矩阵:多个向量组成的二维数组(n行*m列),要求数据类型相同
数组:维度大于2的数组(x组*n行*m列)
数据框:多个向量组成的二维数组(n行*m列),每列数据类型可不同
列表:以上各种数据类型任意组合的数据结构
【3】常用的数据结构
最常用的数据结构是数据框,因为数据框相对更加灵活(各列的变量类型可以不同)而且数据框的结果相对简单(只有行*列)。在Excel和MySQL数据表格里面导入的都是数据框结构的数据
数据结构看似复杂,其实只是数据的组合形式的不断变化而已,初学者可以重点理解数据框,其他部分暂不细讲,想深入了解的同学可在后台回复“教材”下载《R语言实战中文版》自行学习第二章内容。
案例讲解:创建一个数据框
*本文使用的源数据来自R语言实战第四节数据leadership
案例描述:
现有一份领导力评分的问卷,问卷数据包含了被试的编号,填写日期,国籍,性别,年龄等基本信息和关于领导力的5个问题(q1-q5)的得分情况。现在需要设计一个数据框并将以上数据存储进该数据框。
操作指导:
【先将每组信息(性别,年龄,得分等)放入独立的向量中,函数为c(数值,数值,...)】→【将向量整合到一个数据框,整合函数为data.frame(向量1,向量2,......,)】
脚本如下,点击看大图
数据框创建完成后,我们发现这个数据还不具备分析的条件,需要进行数据清洗
存在各种缺失值(NA和99)
对年龄进行分段
日期格式有问题(此时的日期是字符串数据,如果要进行运算需要转换为日期数据)
1
常见的缺失值处理问题
把明显错误的值设置为缺失值(99替换为NA)
删除缺失值所在的这条观测数据
为缺失值赋值(比如缺失值为平均水平)
案例讲解:缺失值处理
案例描述:
如果数据量较大且缺失值较少时,可以把有缺失值的问卷做无效问卷,删除整条数据,有时可以在不影响最终分析结果的前提下替换部分缺失值,例如本例中q5和q4列用平均得分替换缺失值。其中年龄为99是一个明显不可能的值,也需要替换成缺失值。
操作指导:
***对数据进行清洗后的结果可以用原数据框进行命名,即替换原数据框,也可以新命名,这样清洗前的数据也会保留,建议采用新命名。
删除缺失值函数:na,omit(数据框名称)*数据框名称不加引号
替换变量数值
需要替换的变量【替换条件】
*数据框$变量名是变量的精确定义,考虑到存在几个数据框中有重复变量名的情况
判断是否缺失值:is.na(变量名)
计算均值:mean(需要计算的变量,na.rm=TRUE)*na.rm=TRUE表示忽略缺失值
脚本如下,点击看大图
结果如下
2
变量的调整
添加新变量
修改变量类型
变量的重编码
案例讲解:变量调整
案例描述:
在数据框添加一个新变量qmean表示每个被试的平均领导力得分。再添加一个年龄段变量agecat,根据每个被试的age数值分为青年(30岁以下),中年(30-40)和老年(40以上),并且将agecat变量转换为有序因子型(顺序为老中青),对数据框按照年龄,性别对数据进行排序。
操作指导:
重编码函数
within(数据框名称,{
创建的新变量
创建的新变量[赋值条件]
创建的新变量[赋值条件2]
创建的新变量[赋值条件3]
}
设置有序因子函数:factor(变量名,order=TRUE,levels=c(第一位,第二位,第三位......))
查看变量是否为因子型:is.factor(变量名)
***因子是指类别型变量,例如虽然名称和性别都是字符串,但是性别就属于因子,因子和数值格式的变量都是可以排序的,被称为有序因子,顺序可以设置(例如本例中的老中青)
排序:数据框[order(第一排序,第二排序)]*排序变量前加-表示降序
脚本如下,点击看大图
最终结果
3
日期的处理
字符型到日期型的转换
日期的数值运算
下图为日期格式的写法示例,摘自《R语言实战》第四章4.6节
案例讲解:日期值处理
案例描述:
数据框中的日期实际是字符串格式,需要转化为“yyyy-mm-dd”的日期格式,并且计算据今天的时间差。
操作指导:
将字符型数据设置成日期as.Date(变量,%m%d%y)
取今天的日期Sys.Data()
计算日期差(可直接相减获得天数)difftime(近日期,远日期,units="单位"
脚本如下,点击看大图
结果如下
4
数据框管理
合并列
合并行
取子集
案例讲解:数据框管理
案例描述:
在原有数据框的基础上补充企业规模的数据(来自表leadership_scale),并且删掉部分不需要的变量;
将新补充数据(leadership_2nd)续到原数据框下面;
根据筛选条件条件在数据框中选出部分数据组成新的数据框。
操作指导:
合并列函数:merge(数据框1,数据框2,by="关联变量"*关联变量是指两个数据框共有的且每行唯一的变量,例如本例中的经理人编号
合并行函数:rbind(数据框1,数据框2)
筛选取子集函数:subset(数据框,筛选条件,select=c(选入观测的变量)
领取专属 10元无门槛券
私享最新 技术干货