数据清洗和规整要依据实际数据的特征进行,其包括缺失值和冗余值的处理、数据重归类、字符类型转换等。这里将使用“狗熊会”的基础案例 “高考填报志愿,你选好了吗?”的数据进行介绍。该案例用于预测高校录取分数线的相关影响因素,因变量为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$所在地) #将 所在地 中存在“市”替换成空(“”)
同时,由于 所在地 中的城市过多,且大部分城市出现频次很小,在进行分析的时候会造成因子数量过多,因此对这些城市按行政级别将城市进行归类,副省级及以上城市归为“特大城市”,省会城市及苏州、珠海划分为“大城市”,其余归为“中等城市”。 >lcity<-c("北京","上海","天津","重庆","广州","深圳","南京","武汉","沈阳","西安","成都","济南","杭州","哈尔滨","长春","大连","青岛","厦门","宁波")
>bcity<-c("石家庄","郑州","太原","合肥","长沙","南昌","福州","海口","南宁","贵阳","昆明","西宁","兰州","银川","乌鲁木齐","呼和浩特","拉萨","苏州","珠海")
>szd<-colleges$所在地 #将所在地 赋予szd
>for(i in 1:1169) #一共1169条记录,故要循环1169次
{ >ifelse(szd[i]%in%lcity,szd[i]<-"特大城市",ifelse(szd[i]%in