在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
数据清洗和规整要依据实际数据的特征进行,其包括缺失值和冗余值的处理、数据重归类、字符类型转换等。这里将使用“狗熊会”的基础案例 “高考填报志愿,你选好了吗?”的数据进行介绍。该案例用于预测高校录取分数线的相关影响因素,因变量为x2015年平均线。 数据下载链接:http://mp.weixin.qq.com/s/8jkUfoK2_-VGntfVWjnp1A 一、数据读入与结构分析 将下载的数据转为文本格式并保存到目标文件夹下,然后读入数据,查看数据格式与内容。 >colleges<-read.csv("colleges.csv",stringsAsFactors=FALSE) #禁止将所有字符转换为因子,以方便后续清洗和规整 >str(colleges) #查看数据结构与内容 由上可知,该数据包含1169条记录和13个变量,其中因变量 x2015年平均线 为字符型,需要转换为数值型: >colleges$X2015年平均线<-as.numeric(colleges$X2015年平均线) 接下来,分别查看各字段,以确定是否需要进行清洗和规整。经分析,发现 所在地、隶属 字段中的字符不规范,要进行规整。 二、数据清洗与规整 1.所在地 数据清洗与规整 所在地 中存在冗余数据,要将多余的“市”删除 colleges$所在地<-gsub("市","",colleges$所在地) #将 所在地 中存在“市”替换成空(“”) 同时,由于 所在地 中的城市过多,且大部分城市出现频次很小,在进行分析的时候会造成因子数量过多,因此对这些城市按行政级别将城市进行归类,副省级及以上城市归为“特大城市”,省会城市及苏州、珠海划分为“大城市”,其余归为“中等城市”。 >bcity<-c("石家庄","郑州","太原","合肥","长沙","南昌","福州","海口","南宁","贵阳","昆明","西宁","兰州","银川","乌鲁木齐","呼和浩特","拉萨","苏州","珠海") >szd<-colleges$所在地 #将所在地 赋予szd >for(i in 1:1169) #一共1169条记录,故要循环1169次 { } #如果第i条记录(城市)包含在lcity中,则将该条记录替换为“特大城市”,包含在bcity中,则替换为“大城市”,都不包含在上述两个向量中,则替换为“中等城市” >colleges$所在地<-szd #将所在地 中的值用szd替代 2.隶属 数据清洗与规整 隶属 数据中包含了所在地与机构,而上述所在地已经可以体现出所在地的影响,因而我们要对冗余数据进行清理,仅突出隶属级别上的差异。如福建省教育厅与甘肃省教育厅同属于“教育厅”,无需凸显其所在地。 >ls<-colleges$隶属 >for(i in 1:1169) { } #截取ls中第i个记录,由倒数第三个(nchar(ls[i])-2)开始截取字符,若截取下的字符为“教育厅”,则将该记录替换成“教育厅”,否则不变。 此外,还需将北京、上海、天津、重庆等直辖市教育委员会与教育厅同级,也需修改为教育厅。 >for(i in 1:1169) { } #从=截取ls中第i个记录的前两个,若为北京,则替换为教育厅,上海、天津、重庆也是如此。 还有一些个别的为省份的,如广东、河北省的记录也替换为教育厅。 3.将数据类型转换为因子 >colleges<-colleges[,-1] #大学名称 相对于id,故去除该字段 地址 字段无用也剔除,将所在地、隶属、类型等转换为因子 >colleges[1:2]<-lapply(colleges[1:2],factor) #同时将处于1,2两个位置的所在地和隶属转换为因子 查看数据结构,可见此时个字段的因子数量要比为处理前少许多 三、建立回归模型 1.查看缺失值 通过查看各自的数据,发现仅 x2015年平均线 中存在缺失值,且缺失值超过60%(736/1169) 因变量缺失的记录数要远多于因变量无缺失数,此时对缺失的因变量进行插补将影响到整体数据的真实性,故直接删除因变量缺失的记录 >colleges1<-colleges [!is.na(colleges$X2015年平均线),] #删除平均线缺失的记录 >ts<-lm(colleges1$X2015年平均线~.,data = colleges1) #以x2015年平均线为因变量,其余全部字段(.)为变量建立回归模型 >summary(ts) #查看回归模型 残差 R |
请发表评论