如何创建虚拟变量

2016-10-25 谢慧蓉 爬虫俱乐部 爬虫俱乐部

在我们用stata处理数据的过程中,经常需要创建虚拟变量,今天小编就为大家分享下创建虚拟变量的几种方法吧。

(一)通过gen创建虚拟变量

 我们在stata中调入1978年的汽车数据,其中rep78表示的是汽车的修理次数,通过tab rep78可以查看具体情况。

  我们创建虚拟变量bad,当rep78<=2说明汽车质量好,bad=0,rep78>2说明汽车质量差,bad=1

  运用gen创建虚拟变量命令如下:

gen bad = (rep78>2) if rep78!=.

  当rep78不等于缺失值时,产生的虚拟变量bad在满足条件rep78>2时取1,其他取0.


(二)通过gen和replace组合创建虚拟变量

不仅能通过gen命令创建虚拟变量,通过genreplace的组合同样也能创建虚拟变量。

调用汽车数据,创建虚拟变量命令如下:

gen bad =0

replace bad=1 if rep78 > 2

运行结果如下:

我们可以发现在rep78中存在缺失值,其bad=1,此时我们可以将缺失值对应的bad也替换为缺失值,命令如下:

replace bad =. if rep78==.


(三)通过tabulate创建虚拟变量

用generate,replace创建一系列的虚拟变量过程就会比较繁琐,这里我们可以通过tabulate一次产生一系列的虚拟变量,利用tab创建虚拟变量命令如下:

tab varname, generate(stubname)

重新调入汽车数据,执行命令:

tab rep78, generate(r)

通过tab命令,创建出虚拟变量名称为r1r2r3r4r5,当rep78=1时,r1=1,rep78=2时,r2=1,以此类推。并且对于字符型变量,tabulate也同样适用。

(四)通过recode创建虚拟变量

同样,利用recode也能很快速地产生虚拟变量,recode命令如下:

recode varlist (rule) [(rule) ...] [, generate(newvar)]

重新调入汽车数据,利用recode命令将rep78中等于12的数据改变为0,等于345的数据改变为1,并将结果保存在新产生的变量bad,命令如下:

recode rep78 (1 2 = 0) (3 4 5 = 1), generate(bad)


(五)通过cond创建虚拟变量

我们也可以通过条件函数cond来创建虚拟变量,条件函数cond(x,a,b) x是一个条件, 条件成立时取a,条件不成立时取b。调入汽车数据,创建虚拟变量命令如下:

gen bad = cond(rep78>2,1,0) if rep78 !=.

(六)通过todummy创建虚拟变量

下面要介绍一个专门创建虚拟变量的命令——todummy,首先我们需要通过 ssc install todummy安装todummy命令,tudummy命令使用方法如下:

下面小编就用具体例子让大家看看todummy的神奇之处,调入nlsw88.dta这份数据。

1.以变量的中位数为界,大于中位数虚拟变量取值为1,小于中位数取值为0,创建虚拟变量命令如下:

todummy wage ,values (50) percentile

创建了虚拟变量d_wage

通过命令todummy wage, median也能产生同样的结果,各位看官可以自己尝试.

2.将变量分段,创建多个虚拟变量

通过如下命令:

todummy age, values(45\40\=38 40) cut

创建出虚拟变量age1,age2,age3,当年龄大于等于45age1=1,当年龄大于等于40时,age2=1,当年龄在3840之间时,age3=1,其他情况,age1,age2,age3均为0

3.根据变量的类别,创建多个虚拟变量

对于race变量,通过tab race可以发现有三类人种


根据三类人种,创建虚拟变量,当为白种人时,虚拟变量white=1,当为黑人或者其他时,虚拟变量other =1.命令如下:

todummy race, values (1 \ 2 3) generate (white other)


以上就是今天我们与大家分享的内容了,关于todummy更多强大的命令大家可以根据help文件加以了解。大家赶紧对这几种创建虚拟变量的方法练练手吧!

说得好就赏个铜板呗!

有钱的捧个钱场,有人的捧个人场~

点赞打赏随您心意,么么哒~

(编辑 @梅洁瓷傲)

那些让你具有高手气场的黑科技:

1.有了这个命令,以后还怕重复?

2.esttab功能挖掘:“Yes”or“No”

3.用“套路”处理数据

4.厉害了,我stata哥

5.图之多,stata放得下

6.爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度

7.据说这样数据替换比较快,你试一下,然后……

8.众里寻她千百度,synth命令来帮助!

9.登登等登 凳登等灯——均值t检验ttable2命令

10.I have a Stata, I have a python




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


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



长按关注爬虫俱乐部,更多精彩尽在此处

微信扫一扫
关注该公众号