stata 将数据集变量名称导出_Excel统计年鉴如何转换为面板数据?
Excel统计年鉴格式如下图:Excel数据样式目标:Excel导入stata后,要从图1转换为标准格式的面板数据(图2)。图1图2具体操作:因为xls文件不能导入stata,所以需要手动进行转换为xlsx或csv格式。forvalues i=4(1)54{cd /Applications/STATA/2018capture mkdir /Applications/STATA/2018/`i'..
·
Excel统计年鉴格式如下图:
目标:Excel导入stata后,要从图1转换为标准格式的面板数据(图2)。
具体操作:
- 因为xls文件不能导入stata,所以需要手动进行转换为xlsx或csv格式。
forvalues i=4(1)54{
cd /Applications/STATA/2018
capture mkdir /Applications/STATA/2018/`i' /*每循环一次创建一个文件夹,用来存储分表*/
import excel using /Applications/STATA/2018/`i'.xlsx,clear
replace A=A[_n-1] if B=="单位" /*第三行的A值换为省名*/
drop if B=="" /*删除一、二、三、四、等信息*/
由于xlsx有51张表(4-54),代表了51个省份(其中部分表有重复省份),因此循环54次。
每循环一次创建一个文件夹,用于存储一张表的全部分表(分表就是将整个表的区县划分开,一个分表只存储四个区县。)
g temp=1 if B=="单位" /*在每个分表的第一行生成temp变量*/
replace temp=0 if temp==.
local b=_N /*记暂元b为最大观测值,temp依次累加*/
forvalues i1=2(1)`b'{
replace temp=temp+temp[`i1'-1] in `i1'
}
创建temp变量,并依次累加,temp变量用于把分表区分开。
local c=temp[_N] /*记暂元c为temp最大值*/
forvalues i2=1(1)`c'{ /*从1至temp最大值,将分表导出至`i'文件夹,命名为`i2'.dta*/
preserve
keep if temp==`i2' /*从1至temp最大值,导出分表*/
save /Applications/STATA/2018/`i'/分表`i2'.dta,replace
restore
}
依次导出分表至`i'文件夹。
forvalues x=1(1)`c' {
use /Applications/STATA/2018/`i'/`x'.dta,clear
postfile new`x' str30 province str20 county str20 v1 str20 v2 str20 v3 str20 v4 str20 v5 ///
str30 v6 str30 v7 str30 v8 str30 v9 str30 v10 str30 v11 str30 v12 str30 v13 str30 v14 str30 v15 ///
str30 v16 str30 v17 str30 v18 str30 v19 str30 v20 str30 v21 str30 v22 str30 v23 str30 v24 str30 v25 ///
str30 v26 str30 v27 str30 v28 str30 v29 str30 v30 using /Applications/STATA/2018/`i'/new`x'.dta,replace
*******postfile转换后的dta文件保存至2018/`i'文件夹中,命名为new`x'.dta
*******postfile从1到temp最大值`c'
post new`x' (A[1]) (C[1]) (C[2]) (C[3]) (C[4]) (C[5]) (C[6]) (C[7]) (C[8]) (C[9]) (C[10]) (C[11]) (C[12]) (C[13]) (C[14]) (C[15]) (C[16]) (C[17]) (C[18]) (C[19]) (C[20]) (C[21]) (C[22]) (C[23]) (C[24]) (C[25]) (C[26]) (C[27]) (C[28]) (C[29]) (C[30]) (C[31])
post new`x' (A[1]) (D[1]) (D[2]) (D[3]) (D[4]) (D[5]) (D[6]) (D[7]) (D[8]) (D[9]) (D[10]) (D[11]) (D[12]) (D[13]) (D[14]) (D[15]) (D[16]) (D[17]) (D[18]) (D[19]) (D[20]) (D[21]) (D[22]) (D[23]) (D[24]) (D[25]) (D[26]) (D[27]) (D[28]) (D[29]) (D[30]) (D[31])
post new`x' (A[1]) (E[1]) (E[2]) (E[3]) (E[4]) (E[5]) (E[6]) (E[7]) (E[8]) (E[9]) (E[10]) (E[11]) (E[12]) (E[13]) (E[14]) (E[15]) (E[16]) (E[17]) (E[18]) (E[19]) (E[20]) (E[21]) (E[22]) (E[23]) (E[24]) (E[25]) (E[26]) (E[27]) (E[28]) (E[29]) (E[30]) (E[31])
post new`x' (A[1]) (F[1]) (F[2]) (F[3]) (F[4]) (F[5]) (F[6]) (F[7]) (F[8]) (F[9]) (F[10]) (F[11]) (F[12]) (F[13]) (F[14]) (F[15]) (F[16]) (F[17]) (F[18]) (F[19]) (F[20]) (F[21]) (F[22]) (F[23]) (F[24]) (F[25]) (F[26]) (F[27]) (F[28]) (F[29]) (F[30]) (F[31])
post new`x' (A[1]) (G[1]) (G[2]) (G[3]) (G[4]) (G[5]) (G[6]) (G[7]) (G[8]) (G[9]) (G[10]) (G[11]) (G[12]) (G[13]) (G[14]) (G[15]) (G[16]) (G[17]) (G[18]) (G[19]) (G[20]) (G[21]) (G[22]) (G[23]) (G[24]) (G[25]) (G[26]) (G[27]) (G[28]) (G[29]) (G[30]) (G[31])
postclose new`x'
us /Applications/STATA/2018/4/new1.dta,clear /*利用第一个文件夹(`i'=4),从第一个分表依次纵向合并其它分表*/
append using /Applications/STATA/2018/`i'/new`c'
save,replace
}
}
us /Applications/STATA/2018/4/new1.dta,clear
sort province county
egen id=group(province)
save /Applications/STATA/2018/统计年鉴面板.dta,replace
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)