全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件 Stata专版
1703 5
2013-09-20
悬赏 200 个论坛币 已解决
我想设置虚拟变量,如果包含P2504,P2506,P2510任何一个,都取值为1,否则为0自己是初学,实在不会,还请会的前辈不吝赐教


ViolationTypeID
P2504
P2599
P2504
P2505,P2506,P2599
P2503,P2599
P2503,P2504,P2505,P2599
P2512
P2504
P2503
P2504
P2504,P2599
P2503
P2503,P2505,P2510
P2503,P2504,P2505,P2514,P2515,P2599
P2504,P2506,P2510,P2515,P2599
P2512
P2504,P2505,P2510,P2599
P2503,P2504
P2503,P2504
P2503,P2504
P2503,P2505,P2515,P2599
P2511





最佳答案

xingxf 查看完整内容

gen dummy=0 replace dummy=1 if strpos(ViolationTypeID,"P2504")>0|strpos(ViolationTypeID,"P2506")>0|strpos(ViolationTypeID,"P2510")>0 你是要在ViolationTypeID这个变量里面搜索P2504,P2506和P2510。而不是说这个变量等于P2504,P2506和P2510。所以你那种做法肯定不行。 strpos函数你可以看一下解释,help strpos。这是一个string fuction,就你这个问题来说,他搜索ViolationTypeI变量中P2504,P2506,P2510的起始位 ...
二维码

扫码加我 拉你入群

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

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

全部回复
2013-9-20 13:50:12
gen dummy=0
replace dummy=1 if strpos(ViolationTypeID,"P2504")>0|strpos(ViolationTypeID,"P2506")>0|strpos(ViolationTypeID,"P2510")>0
你是要在ViolationTypeID这个变量里面搜索P2504,P2506和P2510。而不是说这个变量等于P2504,P2506和P2510。所以你那种做法肯定不行。

strpos函数你可以看一下解释,help strpos。这是一个string fuction,就你这个问题来说,他搜索ViolationTypeI变量中P2504,P2506,P2510的起始位置,如果变量中存在你要搜索的内容,返回这个内容开始的位置(如果从第三个字符开始,返回3),如果变量中没这个内容,返回0。
二维码

扫码加我 拉你入群

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

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

2013-9-20 14:46:00
用这个语句 gen y=(P2504==1|P2506==1|P2510==1)
二维码

扫码加我 拉你入群

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

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

2013-9-20 14:50:08
主要不知道你的P2504是一些什么样的数据类型,但一般关于一个变量的虚拟变量都是用 gen y=(x==?) 比如1990年的年份虚拟变量的话就是 gen y=(year==1990)。你说是三个变量的任何一个,所以存在着或关系,所以使用或运算符|。
二维码

扫码加我 拉你入群

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

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

2013-9-20 14:56:15
是字符型的,在stata的数据中显示是红色的
这是我做的,不知道错在哪里
gen Violation= 0
replace Violation=1 if (ViolationTypeID=="*P2504*")!(ViolationTypeID=="*P2506*")!(ViolationTypeID=="*P2510*")
运行后搜索不到,没有变量能变成1
感谢各位了,很诚心的跟各位求教
二维码

扫码加我 拉你入群

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

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

2013-9-20 22:08:14
很感谢,设置成功了,而且还学到了很多,很感谢
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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