多变量排序问题:以中国工业企业数据库为例

发布时间:2023-01-06 阅读 577

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:张春雷 (东北财经大学)
邮箱hzhchl@126.com


目录


1. 引言

中国工业企业数据库是经济学科研中较为常见的数据库,其涉及变量较多,通常有几十个甚至上百个。多数科研小白或学者在刚拿到未经整理的工业企业数据库时通常会犯难。太多的变量毫无头绪,无论使用手工删除亦或是代码删除的方式均较为繁琐,且工业企业数据库通常作为面板数据出现,涉及的年份较多,如果每年都手工查找变量或删除变量,工作量将会非常庞大。

因此,在对变量名称规整后,将具有研究价值的变量进行排序,这样不仅使得数据的条理性更为清晰,而且会减小内存占用,提高数据处理的效率。类似中国工业企业数据库这样连续年份的多期数据还有很多,如《全国地市县财政统计资料》,《中国城市统计年鉴》等,大部分多期的数据资料都存在着变量变化的问题,在处理这些资料时候,对变量排序尤为重要。

2. 思路

使用 order 对所有变量名称进行排序固然简单直观,但需要确保变量名称序列中的每一个变量名在数据中都存在,否则 Stata 会报错。将数据中不存在的变量名称从排序序列中剔除十分繁琐,需要逐个校对并和排序序列进行比较,且由于数据中变量的顺序不尽一致,因此,逐个校对将十分困难。

此时迫切需要一种方法,这种方法只需要有排序序列就可以按照既定的顺序对数据中的变量进行排序,并且不受数据中无相关变量的困扰。既定思路如下:

  1. 确定排序序列,即对变量名按照顺序进行排序。
  2. 对排序序列中的变量和数据中的变量进行对比,保留数据中在排序序列中存在的变量,生成一个新的排序序列。
  3. 对数据中的剩余变量按照新排序序列进行排序。

3. 代码

以 1998 年工业企业数据库样本为例,详见以下代码:

. lxhuse sample1998.dta, clear
. local ordervar  "id firm_code firm_name legal_name township village streetoffice Neighborhood T_number
> fax_number postal_code main_product1 main_product2 main_product3 Industry_code Accounting_c
> ategory Registration_type State_owned Affiliation operate_year operate_month Business_status
> All_staff employees Total_units Enterprise_size LH_industry Industrial_output IO_Currentprice
> Newproduct_value Industrial_sales Export_delivery IA_value current_assets St_investments
> Net_receivables stock Finished_products AA_balance LT_investment TF_assets Original_price
> Production_management Accumul ated_depreciation TY_Depreciation fixed_assets Intangible_assets
> I_assets total_assets Current_liabilitiesS Payables LT_liabilities Total_Liabilities Owners_equity
> PU_capital National_capital Collective_capital Corporate_capital Personal_capital HMT Foreign_capital
> Operating_income Product_revenue Product_costs Product_fee Sales_tax sales_pro fit O_income Other_profits
> Operating_expenses Management_costs Which_taxes Property_insurance Office_expenses Se_costs Financial_expenses
> Interest_expenses operating_prof it Investment_income Subsidy_income Nonoperating_income external_expenses
> total_profit Total_loss Total_tax Income_tax advertising_fee RD Labor_costs Pension_insurance
> Payable_profit Wages_payable main_payroll Benefits_payableMain_welfare VAT input_tax output_tax 
> Intermediate_investment year province_code st_ppcname old_st_ppcname new_st_ppcname
> address sheng Administrative_code di xian TNCL Operating_cost Businesstax_surcharges sales_expense   
> Interest_income AML GFCFV "  // 构建排序序列,并将序列内容赋予暂元 order_var

. local ov_num: word count `ordervar'  // 统计排序序列变量个数
. qui: des, varlist                    // 产生数据变量列表 (全名) 
. local des_var = "`r(varlist)'"       // 引用数据变量列表
. local last_var = "`ordervar'"        // 排序序列内容赋予暂元last_var

. * 创建一个循环体
. forvalues i = 1/`ov_num'{
  2.  local ov_v: word `i' of `ordervar' // 取出排序序列中的第i个变量赋给暂元ov_v
  3.  *dis "`ov_v'" // 查看取出的变量名称
.     local isin_des : list  ov_v in des_var // 排序序列中取出的变量是否在数据变量中
  4.  *dis `isin_des' // 查看isin_des值
.     if `isin_des'==0{   // 判断,如果排序序列取出的变量不在数据中,将变量从排序序列中删除
  5.    local last_var = subinword("`last_var'","`ov_v'","",1)   // 排序序列剩余变量
  6.  }
  7. }
. dis "`last_var'" // 查看排序序列中剩余变量
. order `last_var' // 按照排序序列剩余变量的顺序对数据中变量进行排序

4. 总结

通过这种方式,我们无需担心排序序列中的变量是否在数据中存在。即使排序序列中变量在数据中不存在,在最终排序中亦不会出错,可以节省大量工作和时间,且上述代码在外层嵌套新的循环体后,可以批量对多个数据文档进行变量排序工作,能够极大的提升多变量排序的效率。

5. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 编程, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh