全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
16468 6
2013-10-14
就是,我要用到好多限制条件生产新的变量。
其中包括 and or 但是我想让他们分别执行,而不是依顺序进行。

例如,gen a=0 if b==1 | c==2 & d==3 |e==4

我想b==1 |c==2 为一个条件,d==3 |e==4为另一个条件。


怎么能实现呢?
二维码

扫码加我 拉你入群

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

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

全部回复
2013-10-15 05:45:49
你能把你的逻辑重新用文字表述一下么?
|是逻辑或,&是逻辑与
按你目前的表达,你的意思是a=0,如果b=1或者c=2;a=0,如果d=3或者e=4如果是这个意思,那根本没必要区分什么条件的
gen a=1
replace a=0 if b==1|c==2|d==3|e==4

还是说你的意思是,a=0,如果b=1且C=2;或者a=0,如果d=3且e=4
如果是这个意思,那命令如下:
gen a=1
replace a=0 if (b==1&c==2)|(d==3&e==4)

二维码

扫码加我 拉你入群

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

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

2013-10-16 23:51:40
xingxf 发表于 2013-10-15 05:45
你能把你的逻辑重新用文字表述一下么?
|是逻辑或,&是逻辑与
按你目前的表达,你的意思是a=0,如果b=1或者 ...
你确定if 条件里可以用()吗。。。

那我加入是这样的可以吗 gen a=1 if (b==1 |c==1) & (d==1 | e==1)

貌似系统会报错,说&后面的(d 不是一个变量名。。。
二维码

扫码加我 拉你入群

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

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

2013-10-17 01:34:46
dreality 发表于 2013-10-16 23:51
你确定if 条件里可以用()吗。。。

那我加入是这样的可以吗 gen a=1 if (b==1 |c==1) & (d==1 | e==1 ...
if 当然可以加括号,加了括号表示先执行括号里的逻辑
你的意思是说a=1, 如果b或者c等于1,并且d或e等于1.
那应该是
gen a=0
replace a=1 if (b==1|c==1)&(d==1|e==1)
二维码

扫码加我 拉你入群

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

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

2013-10-17 11:52:55
xingxf 发表于 2013-10-17 01:34
if 当然可以加括号,加了括号表示先执行括号里的逻辑
你的意思是说a=1, 如果b或者c等于1,并且d或e等于1 ...
貌似系统会报错,说&后面的(d 不是一个变量名。。.

是不是识别不了后面的括号内容呀。。。
二维码

扫码加我 拉你入群

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

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

2013-10-18 00:02:52
dreality 发表于 2013-10-17 11:52
貌似系统会报错,说&后面的(d 不是一个变量名。。.

是不是识别不了后面的括号内容呀。。。
我试过了没问题的。你能把你的代码写出来么,另外,报错的具体内容贴出来。你这么笼统地说,别人没办法帮你啊。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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