三招而立——local命令的三秘技之文件命名

2016-09-27 徐鑫 爬虫俱乐部 爬虫俱乐部

之前在我们的公众号上也推送了很多关于Stata中宏(local or macro)的用法,在这里爬虫酱将推出local命令系列三招秘技。人说,一招鲜,吃遍天,爬虫酱教你三招,带你一步一步成为stata大神。今天,就和大家分享一个local命令第一招,label为文件命名

这个例子来自于作者处理中国工业企业调查数据库数据样本:工业企业调查数据样本.xlsx),这套数据是国家在微观领域非常有名,收录了规模以上非国有企业和全部国有企业详细的生产经营、资本结构等指标,当然数据量比较大。

Excel打开之后数据长这个样子:


可以看出,第一行为每个字段的含义(中文),从第二行开始是数据字段的内容。首先以Stata13为例(作者当时处理这套数据的时候Stata14还没有出)

使用import命令读入文件,同时使用firstrow这一option,命令如下:


通过describe命令看一下得到的结果:


细心的读者可能会发现,在Stata13平台下,当加入firstrow这一个option之后,凡是中文的,变量名为A,B,C,D…,如果是英文,则会直接作为变量名。接下来,由于ABCD这种变量名实在是不利于后续处理,我们需要给这些变量重命名,这里就要用到variable label这个信息,代码片段如下:


最外层是针对数据集中的每一个变量的一个循环,通过 foreach 实现,其中varlist *使用了通配符,*表示任意字符,这里的含义就是var这个local会依次取数据集中所有的变量。进入循环后,首先是通过local命令获取当前变量的标签信息,并存放在局部宏(locallabel_name中:

local label_name : varlabel `var'

最后通过if语句判断,如果是对应的标签,则改成相应的变量名。

执行后的结果如下:


如果在Stata14平台下运行,也没有问题,只是在第一步用import 读入Excel文件时,变量名是中文,这是因为从Stata14提供了对Unicode的支持,中文也可以作为变量名出现。

好啦,今天的第一招爬虫酱已为大家演示完毕,要成为大神,还要大家多加练习。以后爬虫酱将教给大家第二招——利用type分离不同类型的变量,敬请期待。

我们团队原来的微信公众号是“数据处理援助中心”,现在正式搬家到“爬虫俱乐部”,欢迎关注。新的公众号开始,我们推出有问必答栏目,对您提出的问题,我们会尽力回答,并通过推文的形式进行发布。我们也欢迎各位粉丝向公众号投稿。

(编辑 @付彩月)


欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。

投稿邮箱:xueyuan19920310@163.com 

投稿要求:

1)必须原创,禁止抄袭;

2)必须准确,详细,有例子,有截图;

注意事项:

1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名。

2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。

3)如果大家遇到关于stata处理分析数据的问题,也可以给该邮箱写邮件,邮件名称为“提问”+“问题名称或者关键词”,我们会在后期的推文里给予解答。

长按二维码关注公众号





微信扫一扫
关注该公众号