分别由 CSMAR 和 CNRDS 下载区县统计数据,整理成区县面板数据。
CNRDS 县域统计分为:基本情况,综合经济,农业、工业及投资,教育、卫生和社会保障,共计四张表。以基本情况分表为例,原始数据储存格式如下:
对每张份表循环,提取每个指标,再按照年份、省、地区将分指标匹配。处理过程需要注意指标名称作为变量名时,特殊字符的处理。
cd ../CNRDS
global files "区县基本情况 区县综合经济 区县教育、卫生和社会保障 区县教育、卫生和社会保障"
foreach f of global files{
import excel using "`f'.xlsx", clear
drop in 1
nrow
replace 指标 = usubinstr(指标,"(","",.)
replace 指标 = usubinstr(指标,")","",.)
replace 指标 = usubinstr(指标,":","",.)
levelsof 指标, local(variables)
foreach v of local variables{
preserve
keep if 指标 == "`v'"
destring 数值 年份, force replace
keep 年份 省份 地区 地区编码 数值
rename 数值 `v'
save `v', replace
restore
}
}
fs *.dta
foreach f in `r(files)'{
use `f',clear
duplicates drop 年份 省份 地区, force
save `f', replace
}
mergemany 1:1 all, match(年份 省份 地区) all
missings report _all,sort percent
rename (省份 地区)(省 县)
drop 指标
save "../CNRDS中国区县面板数据_2000-2021.dta", replace
CSMAR 县域经济库分为两个层级,17 个一级名称对应着不同表格,包含不同的变量。下载获取这些原始数据,得到一堆压缩包,首先解压:
cd ../CSMAR
fs *.zip
foreach f in `r(files)'{
unzipfile `f'
}
以各区县行政区划分表为例,CSMAR 数据储存的结构为前三行分别为变量名、中文标签、单位。处理思路是:首先,对所有的分表循环,删除第一行和第二行,并对中文标签去除特殊字符,存为 .dta
;通过 统计年度、县域代码
将数据匹配。
fs CNT_*.xlsx
foreach f in `r(files)'{
import excel using "`f'",clear
ds
foreach v in `r(varlist)'{
replace `v' = usubinstr(`v',"-","",.) in 2
}
drop in 1
drop in 3
nrow
scalar f_temp = "`f'"
local fname = usubinstr(f_temp,".xlsx","",.)
duplicates drop 统计年度 县域代码, force
save `fname'.dta, replace
}
mergemany 1:1 all, match(统计年度 县域代码) all
destring 年份 教育阶段标识-年末城乡居民储蓄存款余额, replace force
save "../CSMAR中国区县面板数据_2000-2021.dta", replace
CNRDS 区县数据库的指标比较少,一些关键指标,如:农村居民人均可支配收入
、城镇居民人均可支配收入
没有。CSMAR 区县数据库的指标比较全,但是一些关键变量的缺失值比较多,不知是原始数据缺失,还是 CSMAR 的问题。后续考虑对两个库的数据,结合县域统计年鉴进行比对、填充。