- 批量设定标签
import excel "PT_LCDOMFORAPPLY.xlsx", first clear
labone, nrow(1 2) concat("_") // 此命令表示将原数据的一二行作为变量标签,并用下划线连接
drop in 1/2 // 删除一二行的文字
destring _all, replace // 把一些原来被识别为文本类型的变量转换为数值型
- 年度变量的转换
gen year = = substr(EndDate, 1, 4) //从变量EndDate值的第一位开始计数,提取前面四个字符
destring year, replace //把提取出来的文本变量转换为数值型变量
- 快速实现表格合并
- ‘merge’的横向合并
- 注意事项
- ‘merge’的横向合并
master 表与 using 表均为 dta 格式
变量名称要保持一致
变量类型要保持一致
实操案例:
/* 资产负债表 */
clear
input long stkcd int year double(asset liability)
726 2009 6303066959.6 2115429187.87
726 2010 7015883263.33 2274286167.32
726 2011 7751885340.43 2281977783.93
726 2012 8153279084.33 2498587064.52
726 2013 8411948561.49 1997348584.08
726 2014 8627671393.88 1611240808.7
726 2015 9091170499.22 1814572869.22
726 2016 9407103263.34 1994029422.98
726 2017 10170624027.75 2395548537.95
726 2018 10537759811.84 2811935096.45
end
/* 利润表 */
clear
input long stkcd int year double(revenue netprofit)
726 2009 4036219837.13 603736257.96
726 2010 5025624126.3 815053109.96
726 2011 6078659406.75 892071216.41
726 2012 5901049894.02 715850368.75
726 2013 6478245029.16 1039811812.78
726 2014 6169688792.53 979377181.57
726 2015 6173322778.61 735543028.77
726 2016 5981751344.63 853073450.12
726 2017 6409224044.97 883319109.6
726 2018 6879058813.93 858193572.1
end
use balancesheet.dta, clear
merge 1:1 stkcd year using incstatement.dta
Result # of obs.
not matched 0
matched 646 (_merge==3)
巧用循环实现批量合并
use balancesheet.dta, clear
foreach v in incstatement shareholders{
merge 1:1 stkcd year using `v'.dta
drop if _merge != 3
drop _merge
}
-
append’的纵向合并
- 注意事项 保持两表变量名一致
合并实例
forvalues i = 2009/2020{
use balancesheet.dta, clear
keep if year == `i'
save temp_`i'.dta, replace
} //把资产负债表当中每一年的数据都拆分出来并分别保存为以 " temp_2009、 temp_2010 ... temp_2010" 命名的 dta 文件
use temp_2009.dta, clear
forvalues i = 2010/2020{
append using temp_`i'.dta
} //得到追加完成样本后的数据,使用save命令进行保存即可