stata - 创建虚拟变量的问题
问题描述
治疗区是 ID 为 1、2、3、6、14 的五个区。“忒修斯行动”政策从第 80 周持续到第 85 周。
ocu
: 行政区号
我尝试创建假人,treated
但time
他们只是显示为零
gen treated =0 if missing(ocu)==0
replace treated =1 if ocu==1/2/3/6/14
gen time = (week==80-85) & !missing(week)`
解决方案
ocu == 1/2/3/6/14
是一种合法的表达方式,但可能与您想要的相去甚远。
occ == 1 | occ == 2 | occ == 3 | occ == 6 | occ == 14
合法且啰嗦
inlist(occ, 1, 2, 3, 6, 14)
合法且可能具有吸引力的表达方式是:是否occ
采用任何指定的值?
尽管 Stata 支持|
作为“或”运算符(而不是/
为此目的)请注意
occ == 1 | 2 | 3 | 6 | 14
是合法的,但几乎不是任何人想要的,因为它已被解析
(occ == 1) | 2 | 3 | 6 | 14
并且将始终被评估为 1 (true),而不管 的值如何occ
,因为仅其他参数之一 2 3 6 14 为非零意味着整个表达式的评估结果为 1 (true)。
如果您希望表达式在 80 和 85 之间表示,则该表达式week==80-85
的语法也是不正确的week
。Stata 将评估week == 80-85
,首先应用减法,然后测试 -5 是否相等。请参阅 中记录的优先规则help operators
。
所有运算符的评估顺序(从第一个到最后一个)是!(或 ~)、^、-(否定)、/、*、-(减法)、+、!=(或 ~=)、>、<、<=、>=、==、& 和 |.*
减法先于测试相等性。
您可能想要week >= 80 & week <= 85
或inrange(week, 80, 85)
.
如果week
介于 80 和 85 之间,则不能丢失。该测试是多余的(但无害)。
推荐阅读
- mongodb - 将图像保存到 mongodb
- javascript - 如何通过 updateMany 正确更新 Mongodb 中的所有数据?
- salesforce - 集成 Salesforce 与 Docusign 无效类型:dfsle.Envelope
- microsoft-dynamics - 如何通过 UI 在测试代码单元中创建新客户?
- css - CSSTransition 中的“出现”不能按预期工作
- python - 如何将现有的 django 对象复制到另一个表以进行临时存储?
- python - 在 xarray 绘图上方绘制底图
- r - r ggplot 等高线密度
- python - 可以将黑色配置为忽略导入吗?
- c# - 我如何控制所有这些我不想在选定的入住和退房时间找到预订的情况?