首先,读取文档。
clear all
set more off
import excel using"d:\fgzs2014\fgzs2014.xls" //
引号内为文档存放路径
从图中可以看出,我们需要解决的两个问题,一是变量命名,二是第一列的空缺值填充。由于
Stata14
可以使用中文作为变量名称,我们的思路为把文档拆为“排名”和“得分”两部分,并以第一行的数据作为变量名。所以我们下面需要填补第一行的空缺值,我们编写程序的思路大致为建立变量
C
到
BB
的循环,设定如果某变量第一行为空值,则用上一变量第一行的值替换空缺值,具体方法如下:
foreach var of varlist C-BB {
if `var'[1] !=""{
local before ="`var'"
continue
} //
我们在
foreach
这个循环内嵌套了一个
if
语句,保存上一变量的名称
replace`var'=`before' if `var'[1]=="" //
识别首行为空值的变量,并用前一变量替换
} //
补充缺失值
接下来我们可以使用往期推文中介绍的
labone
、
nrow
和
carryforward
三个命令简单粗暴的设置变量名、变量标签和填充缺失值,具体如下:
labone,nrow(1 2) //
把第一行和第二行变为变量标签
nrow //
第一行设为变量名
drop in 1
carryforward
省份
,replace //
补充第一列缺失值
destring ,replace float
//
转化为数值型
显然直接使用首行命名的缺点就是“排名”和“得分”两部分会冲突,其实我们只要在刚才的循环中顺便保留“排名”或“得分”其中之一就可以,即在循环中加入
drop
命令就可以实现,完整命令如下:
foreach var of varlist C-BB {
if `var'[1] !=""{
local before ="`var'"
continue
} //
我们在
foreach
这个循环内嵌套了一个
if
语句,保存上一变量的名称
replace`var'=`before' if `var'[1]=="" //
识别首行为空值的变量,并用前一变量替换
drop`before' //
顺便删除“排名”部分
} //
补充缺失值
labone,nrow(1 2) //
添
加
label
nrow //
第一行作为变量名
drop in 1
carryforward
省份
,replace //
补充缺失值
destring ,replace float //
转化为数值型
drop in -1
save
“
d:\fgzs2014\fgzs2014_score
”
,replace //
保存处理好的“得分”数据
有兴趣的读者可以自己尝试完成“排名”部分的处理。
本文所用到的原始数据都可以从爬虫数据中心的网站中获取
http://richdata.znufe.edu.cn/CommonUseData/Index
以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。
欢迎关注爬虫俱乐部