专栏名称: 连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
目录
相关文章推荐
美芽  ·  高调离婚后又求复合,内娱第一笑话... ·  6 小时前  
如东新媒体  ·  明天查成绩!复试攻略都在这儿了→ ·  17 小时前  
如东新媒体  ·  明天查成绩!复试攻略都在这儿了→ ·  17 小时前  
物道  ·  既见城隍:何不来请一个它? ·  昨天  
季顺潘  ·  山坂挂耳咖啡-射手座,JSP咖啡日记22 ·  2 天前  
51好读  ›  专栏  ›  连享会

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

连享会  · 公众号  ·  · 2025-02-22 22:00

正文

👇 连享会 · 推文导航 | www.lianxh.cn

图片
图片

作者 :张春雷 (东北财经大学)
邮箱 [email protected]

温馨提示: 文中链接在微信中无法生效。请点击底部 「阅读原文」 。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 引言

  • 2. 思路

  • 3. 代码

  • 4. 总结

  • 5. 相关推文



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

  • 专题: 计量专题
    • Stata:事件研究法的编程实现
  • 专题: Stata教程
    • Stata编程:暂元,local!暂元,local!
    • 普林斯顿Stata教程(三) - Stata编程
  • 专题: Stata命令
    • Stata编程:暂元local和global的使用技巧
  • 专题: Stata程序
    • Stata编程:_n 和 _N 有啥区别?
    • Stata:复合双引号在编程中的应用
    • Stata小白编程:暂元及macrolists命令
    • Stata小白编程:步步为营-以阶乘计算为例
  • 专题: 工具软件
    • Matlab:莫兰指数的编程实现

图片

尊敬的老师 / 亲爱的同学们:

连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!







请到「今天看啥」查看全文