用confirm命令检查变量是否存在

2017-08-29 高金凤 爬虫俱乐部 爬虫俱乐部

由于编辑器原因,导致昨天推文中confirm命令两次拼写错误,影响了读者的阅读和学习,因此我们团队紧急撤回了昨天的推文,给读者带来不便,深感抱歉。我们会在星期六补发一篇推文。

大大大大大新闻————自公众号推送视频讲解环节以来,深受广大读者朋友的喜爱。近日向我们提问的粉丝也是大幅增加呐!为了便捷管理相关信息,提高工作效率,我们对提问方式做了略微调整哟~提问者需点击推文底部“阅读原文”下载爬虫俱乐部用户问题登记表并按要求填写后发送至邮箱statatraining@163.com,我们会及时为您解答哟~

Jack

Mavis

大家还记得我们公众号的第一篇推文“confirm file:检查一个文件是否存在”中介绍到的confirm命令可以确认一个文件是否存在。其实,confirm命令还可以确认某一类型的变量是否存在。

在这里,我们先以系统数据为例,简单说明confirm命令的用法,键入如下命令:

sysuse auto,clear

foreach v of varlist * {

    capture confirm numeric variable `v'

    if _rc==0 {

        format `v' %9.2f     //设置数值变量输出格式

        label value `v'    //删除标签

    }

    else {

        replace `v'=subinstr(`v'," ","",.)    //匹配字符变量,删除空格

        replace `v'=subinstr(`v',".","",.)    //匹配字符变量,删除.  

   }

}

list in 1/5

可以看到,我们对字符型数据和数值型数据分别作了对应的处理。

在实证研究中,为了得到较为可靠的结论,我们经常会对连续变量(除字符型和byte型)做一些标准化处理或者缩尾处理。如果涉及到的变量比较多,为了提高效率,我们通常选择批量处理。此时,confirm命令就起到了很好的作用。在这里,我们先随机产生一个数据集,包括所有的数据类型:字符型、byte型、int型、long型、float型、double型。键入如下命令:

clear

set obs 1000

forvalues i =1(2)5{

       gen x_`i'=uniform()

}

forvalues i=2(2)6{

       gen x_`i'=int(uniform()*1000)

       tostring x_`i',replace force

}

gen int x_7=int(x_1*100+100)

gen double x_8=x_3

gen byte x_9=x_5>0.5

gen float x_10=x_1

gen long x_11=int(x_3*1000+100)

des x*

假 如,现在我们需要对连续变量进行标准化处理,标准化处理的方法有很多种:比如,可以用外部命令center、或者用egen命令和std()函数生成均值 为0方差为1的变量(命令格式:egen new_v=std(old_v))、还可以直接生成变量的对数形式,此时用到gen函数即可(命令格式:gen new_v=log(old_v) )等等,具体方法的选择,要与实际问题相结合进行考虑。在此,我们用外部命令center操作如下:

foreach v of varlist *{

    local data_type:type `v'

    capture confirm numeric variable `v'

    if _rc!=0 {

        continue

       }

     else {   

         if "`data_type'"!="byte"{

             center `v', prefix(z_) standardize

              ren z_x_* sta*

           }

       }

 }

list sta* in 1/5

prefix() :表示设置变量的前缀

standardize:表示生成均值为0,方差为1的变量

当然,可用到同样的方法对多个变量进行批量的缩尾处理,感兴趣的读者朋友也可以查看往期推文“如何处理离群值:winsor 还是直接cut?”进行学习哟~有了confirm命令,我们再也不怕批量处理某一特定类型的变量了呢,如果你get到这个方法,欢迎打赏转发哟~

什么?!没看懂!!不要紧!!戳下面,听爬虫小将的详细讲解,也欢迎大家的批评指正哟!

以上就是今天给大家分享的内容了,说得好就赏个铜板呗!有钱的捧个钱场,有人的捧个人场~。另外,我们开通了苹果手机打赏通道,只要扫描下方的二维码,就可以打赏啦!

应广大粉丝要求,爬虫俱乐部的推文公众号打赏功能可以开发票啦,累计打赏超过1000元我们即可给您开具发票,发票类别为“咨询费”。用心做事,只为做您更贴心的小爬虫。第一批发票已经寄到各位小主的手中,大家快来给小爬虫打赏呀~

                        文字编辑:王   明

技术总编:刘贝贝



往期推文推荐:

1.高校学术大神:你的导师上榜了吗?

2.中国高校财经、管理与综合类期刊灌水排行榜

3.命令sum2docx输出统计量表到docx文件

4.reg2docx报告你的实证结果吧!

5.爬虫俱乐部又出新命令了——wordconvert转换你的word文件

6.putdocx+wordconvert—将实证结果输出到Word.docx)文档

7.Stata 15Markdown——没有做不到,只有想不到!

8.矩阵和宏的故事

9.shelloutopen anything

10.Putpdf--神奇的转换工具



关于我们

微信公众号“爬虫俱乐部”分享实用的stata命令,欢迎转载、打赏。爬虫俱乐部是由李春涛教授领导下的研究生及本科生组成的大数据分析和数据挖掘团队。

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

投稿邮箱:statatraining@163.com

投稿要求:
1)必须原创,禁止抄袭;
2)必须准确,详细,有例子,有截图;
注意事项:
1)所有投稿都会经过本公众号运营团队成员的审核,审核通过才可录用,一经录用,会在该推文里为作者署名,并有赏金分成。
2)邮件请注明投稿,邮件名称为“投稿”+“推文名称”。
3)应广大读者要求,现开通有偿问答服务,如果大家遇到关于stata分析数据的问题,可以在公众号中提出,只需支付少量赏金,我们会在后期的推文里给予解答。

欢迎关注爬虫俱乐部

微信扫一扫
关注该公众号