三招而立——local命令的三秘技之分离不同类型的变量

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

之前,爬虫酱和大家分享了local命令系列的三招秘技之第一招——文件命名。今天,要传授给大家第二招——利用type分离不同类型的变量


相信做实证研究的小伙伴们经常在论文中看得到这样一句话:“本文对所有连续变量在1%的水平下进行了缩尾处理(winsorize)”。在之前的推文中,我们也推送过相应的变量winsor或者winsor2。在这里笔者用winsor2,并使用随机生成的数据做例子。

这条命令的语法很简单,比如,要对随机生成的变量x做winsorize处理,代码如下:

对比 x和x_wn,就可以发现已经顺利实现了缩尾处理:

一 个变量的缩尾处理很容易,但是,如果变量的数量持续增加,从1个变成2个,变成10个乃至500个呢?总不能一个个写出来吧,当然懒人肯定是不会写的。很 直观的一个思路就是,把所有的需要做winsorize处理的变量挑出来做缩尾不就完了嘛,ok,哪些变量需要被处理呢?论文会告诉你——连续变量。

在Stata中,变量的类型一共有两大类:数值型和字符型。其中数值型又可以进一步分为5类:byte,int, long, float和double,至于各个变量类型有什么区别,请help data type 查询。

我们通过如下一段代码随机生成一些变量,涵盖上述所有类型:
        结果如下:

显然字符型的变量是不能做winsorize的。其次,对于byte类型的变量,常见的就是用于虚拟变量,也是不应该做winsorize的,由此我们的思路可以概括为:

1.针对所有变量循环,

2.如果变量类型为byte 或者 str#,则不做winsor;

3.如果变量类型为其他,则做winsor

判断变量类型可以通过local 下的extend function – type实现,相关代码如下:

综上,通过简单的循环+if-else+continue+strpos()函数即实现对多个变量的缩尾处理。

好啦,今天的local命令第二招爬虫酱已经传授给大家了,大家要多多实践,早日成为stata中的武林高手!之后,爬虫酱将会为大家带来第三招——利用 dir()函数删除目录下某一特征的全部文件,敬请期待~

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

(编辑 @强宇曦)


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

投稿邮箱:xueyuan19920310@163.com 

投稿要求:

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

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

注意事项:

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

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

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


长按二维码关注公众号

微信扫一扫
关注该公众号