失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > stata 将数据集变量名称导出_Excel统计年鉴如何转换为面板数据?

stata 将数据集变量名称导出_Excel统计年鉴如何转换为面板数据?

时间:2021-11-11 01:14:29

相关推荐

stata 将数据集变量名称导出_Excel统计年鉴如何转换为面板数据?

Excel统计年鉴格式如下图:

Excel数据样式

目标:Excel导入stata后,要从图1转换为标准格式的面板数据(图2)。

图1
图2

具体操作:

因为xls文件不能导入stata,所以需要手动进行转换为xlsx或csv格式。

forvalues i=4(1)54{cd /Applications/STATA/capture mkdir /Applications/STATA//`i' /*每循环一次创建一个文件夹,用来存储分表*/import excel using /Applications/STATA//`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*/preservekeep if temp==`i2' /*从1至temp最大值,导出分表*/save /Applications/STATA//`i'/分表`i2'.dta,replacerestore}

依次导出分表至`i'文件夹。

forvalues x=1(1)`c' {use /Applications/STATA//`i'/`x'.dta,clearpostfile 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//`i'/new`x'.dta,replace*******postfile转换后的dta文件保存至/`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//4/new1.dta,clear /*利用第一个文件夹(`i'=4),从第一个分表依次纵向合并其它分表*/append using /Applications/STATA//`i'/new`c' save,replace}}us /Applications/STATA//4/new1.dta,clearsort province countyegen id=group(province)save /Applications/STATA//统计年鉴面板.dta,replace

如果觉得《stata 将数据集变量名称导出_Excel统计年鉴如何转换为面板数据?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。