虫文共享|从你的数据处理世界路过

2016-10-06 吴玉轩 爬虫俱乐部 爬虫俱乐部
从你的数据处理世界路过  

我希望有个如你一般的人
如山间清爽的风
如古城温暖的光
从清晨到夜晚
从use到循环
只要最后是用stata  就好
今天  你用了哪个命令
哪个命令  又困惑了你呢
从你的数据处理世界路过
我是
你的爬虫俱乐部

感谢您一直关注我们的“爬虫俱乐部”公众号,今天我们公众号正式开通“虫文共享”板块,我们会通过这个板块推送出您的来稿,分享您的文章,让您的文字帮助更多在使用stata软件的人。今天的稿件来自于南开大学经济学院吴玉轩,让我们来看看他与我们再议local&label-strtoname之应用。

最近,笔者在处理工业企业数据库时,遇到这样一个问题:在stata13.1版本中,将变量名称为中文的变量导入stata时,stata自动将变量名称作为标签(label),变量依次命名为var1,var2,…,如下图所示,以2006数据库为例,共有137个变量(图中仅列示了前11个变量),单从变量名称难以了解其经济含义,因而将标签名称“复制”给变量名称是件有价值的事。批量才是硬道理,如何批量“复制”?在之前的推文中,作者采用foreach+local+if语句的办法实现了批量“复制”,一个比较大的问题就是采用该方法“复制”一个变量需要一条if语句,变量较多的时候该命令会显得冗长。今天笔者提供一种解决该问题的新思路——应用strtoname,只用 4 条命令就能解决这个问题。


先上命令:


下面是执行结果(限于篇幅,仅列示前11个变量):


下面简单解释一下处理思路。首先介绍一下strtonamestrtoname(s,p)将字符串s转换成符合stata要求的名称。其中,p01。当字符串中有不符合stata命名规则的字符时,便以_代替之,例如,strtoname("a name",1) = "a_name"。对于参数p,当p=1并且字符串第一个字符为数值型字符时,会自动在前边加_。当从暂元(local) label_mingcheng中得到标签字符串后,利用local new_var=strtoname("_`label_mingcheng'",1),可以生成新的暂元(local) new_var,该变量存储了符合stata要求的中文标签名称,再利用rename重命名即可。关于暂元(local)的使用,与前边的推文并没有太多不同。

需要注意的是,考虑到变量名称第一个字符不能为中文,strtoname命令中加了标记_。最终生成第一个字符为_,后边“复制”标签名称的变量(当然,英文名称处理起来会更方便)。利用foreach+local+strtoname,在变量较多的时候可以高效处理label“复制”的问题。看完今天的推送,批量复制又可以节约你的大量时间,这个小技能,你学会了吗?

如果从你的全世界路过

那我在终点等你

如果从你的数据处理世界路过

那我在“爬虫俱乐部”等你

我希望有个如你一般的人

一直陪伴

用遍stata中的命令

我是你的“爬虫俱乐部”,期待你的关注,欢迎你的来稿

                                                         

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

(编辑 @徐苾雯)


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

投稿邮箱:xueyuan19920310@163.com

投稿要求

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

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

注意事项

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

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

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

长按二维码关注公众号

微信扫一扫
关注该公众号