全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
32606 16
2010-03-11
请大家看这段代码,我很困惑为什么执行的时候并没有按照语句的动作实现结果:问题是,当d1==0时 我确实发现有d3a=.的数据没有被替换为0.但是程序也不报错,说明我的语法上应该没有问题啊~~~~很无奈,很迷茫。。。现在做项目赶时间,我很着急,希望高手指教,拜谢!
我查看过帮助,stata是支持嵌套语句的。。。。迷茫啊
PS:我用STATA/SE11 STATA/SE10,都是这样,应该和版本没太大关系吧

if d1==0{             /*如果d1=0,这个家庭无此项收入*/
gen gardhhdinc=0
}
else{
replace d3a=0 if d3a==. | d3a<0
replace d3b=0 if d3b==. | d3b<0
replace d3c=0 if d3c==. | d3c<0
replace d5=0 if d5==. | d5<0
replace d6=0 if d6==. | d6<0
replace d7=0 if d7==. | d7<0
gen wktime0=d3b*d3c*4*d3a
sort hhid00
by hhid00:egen totlwktime0=sum(wktime0)
if totlwktime0==0{
gen idivgardhhdinc=0
}
else{
gen timeprob0=wktime0/totlwktime0
gen gardhhdinc=(d5-d7)+d6*12
gen idivgardhhdinc=timeprob0*gardhhdinc
}
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-3-11 17:39:35
xiaomin_yan01 发表于 2010-3-11 17:31
if d1==0{             /*如果d1=0,这个家庭无此项收入*/
gen gardhhdinc=0
}
注意:这里的命令只对d1的第一个观测值进行判断。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-11 17:47:53
xiaomin_yan01 发表于 2010-3-11 17:31 请大家看这段代码,我很困惑为什么执行的时候并没有按照语句的动作实现结果:问题是,当d1==0时 我确实发现有d3a=.的数据没有被替换为0.
replace d3a=0 if d3a==. | d3a<0
replace d3b=0 if d3b==. | d3b<0
replace d3c=0 if d3c==. | d3c<0
replace d5=0 if d5==. | d5<0
replace d6=0 if d6==. | d6<0
replace d7=0 if d7==. | d7<0
*这几步想要如下结果?

foreach v of var d3b d3c d5 d6 d7{
recode `v' (min/0 .=0) if d1!=0
}
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-12 20:11:16
谢谢版主的回复!对,我就是要实现这个功能,我的代码问题出在哪啊?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-13 15:05:01
为啥没人回复啊??抓狂啊:-C
好心人帮帮忙啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-3-13 15:11:45
xiaomin_yan01 发表于 2010-3-12 20:11 我的代码问题出在哪啊?
前面不是说明问题所在了吗?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群