********将一个分类变量生成多个虚拟变量
****xi命令
xi i.rep78 // 针对rep78(定类变量)生成虚拟变量
****tab命令
tab rep78,gen(dummy_rep78) //自动生成5个虚拟变量,尤其对于年份的虚拟变量比较管用
reg price length dummy* //dummy* 等同于rep78生成的5个虚拟变量,reg命令会自动剔除一个保证不会出现共线性问题。
********以下是将一个分类或连续变量生成一个虚拟变量
****gen命令
gen rep_1=(rep78==1|rep78==2) //把变量取值12345的rep78变成赋值为1、0的虚拟变量
gen p=price
recode p 0/10000=0 10000/50000=1 //针对price(定距变量)生成虚拟变量 ,并列出频次
gen p=0
replace p=1 if price>10000 //另一种方法
gen p=price>10000 //(price>10000取1,否则取0)又一种快捷方法
【问题】
虚拟变量经常用。
怎么生成虚拟变量?
【方法】
1、利用gen慢慢写
2、利用tab var,gen(dummy)
3、不生成,直接xi:**** i.var
4、recode
对于连续变量时候,tab、recode和xi就不行了。
这时候,还是todummy上场。
【例子】
ssc install todummy
sysuse nlsw88 ,clear
*按中点生成虚拟变量
todummy wage ,median
*分段生成虚拟变量
todummy age ,values(45 \ 40 \ = 38 40) cut
*还有很多用法,help下吧
【问题】
有时候,很多类型变量,想从中生成虚拟,又不愿意一个一个地写。
【方法】
recode是可以尝试一下的
【例子】
recode var1 (1 35 =0)(2 4 6=1),gen(var_new)
*将var1中的 1 3 5 生成 0; 2 4 6变成 1
recode var2 100/max=1 50/100=0 0/50=-1,gen(var_new2)
*分段生产虚拟