创建伪变量时遇到的问题

时间:2020-06-13 10:31:17

标签: stata dummy-variable

治疗自治市镇是ID分别为1、2、3、6、14的五个自治市镇。“ These修斯行动”政策的执行期限为80周至85周。

ocu:自治市镇ID

我尝试创建treatedtime的虚拟变量,但它们对所有人都显示为零

gen treated =0 if missing(ocu)==0
replace treated =1 if ocu==1/2/3/6/14
gen time = (week==80-85) & !missing(week)`

1 个答案:

答案 0 :(得分:1)

ocu == 1/2/3/6/14是一个合法的表达方式,但距离您想要的还有很长的路要走。

occ == 1 | occ == 2 | occ == 3 | occ == 6 | occ == 14 

是合法的且long之以鼻的

inlist(occ, 1, 2, 3, 6, 14) 

合法并且可能会吸引人:occ是否采用了指定的任何值?

尽管Stata支持|作为“或”运算符(而不是/),请注意

occ == 1 | 2 | 3 | 6 | 14 

是合法的,但绝不会像解析后的任何人所希望的那样

(occ == 1) | 2 | 3 | 6 | 14 

,并且无论occ的值如何,始终将其赋值为1(真),因为其他参数2 3 6 14中只有一个非零表示整个表达式的赋值为1(真) 。

如果表达式week==80-85的意思是week在80到85之间,则语法也是不正确的。Stata将求值week == 80-85,首先应用减法,然后使用- 5,请参阅help operators中记录的优先级规则。

所有运算符的评估顺序(从头到尾)为! (或〜),^,-(否定),/,*,-(减法),+,!=(或〜=),>,<,<=,> =,==,&和|。*

在进行相等性测试之前先减去。

您可能需要week >= 80 & week <= 85inrange(week, 80, 85)

如果week在80到85之间,则不能丢失它。该测试是多余的(但无害)。