在我们用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命令创建虚拟变量,通过gen和replace的组合同样也能创建虚拟变量。
调用汽车数据,创建虚拟变量命令如下:
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命令,创建出虚拟变量名称为r1、r2、r3、r4、r5,当rep78=1时,r1=1,当rep78=2时,r2=1,以此类推。并且对于字符型变量,tabulate也同样适用。
(四)通过recode创建虚拟变量
同样,利用recode也能很快速地产生虚拟变量,recode命令如下:
recode varlist (rule) [(rule) ...] [, generate(newvar)]
重新调入汽车数据,利用recode命令将rep78中等于1和2的数据改变为0,等于3、4、5的数据改变为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,当年龄大于等于45时age1=1,当年龄大于等于40时,age2=1,当年龄在38到40之间时,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文件加以了解。大家赶紧对这几种创建虚拟变量的方法练练手吧!
说得好就赏个铜板呗!
有钱的捧个钱场,有人的捧个人场~
点赞打赏随您心意,么么哒~
(编辑 @梅洁瓷傲)
那些让你具有高手气场的黑科技:
6.爬虫俱乐部周末送大礼——chinagcode提取中文地址经纬度
10.I have a Stata, I have a python
此外,欢迎大家踊跃投稿,介绍一些关于stata的数据处理和分析技巧。
长按关注爬虫俱乐部,更多精彩尽在此处
微信扫一扫
关注该公众号