如何修正Stata代码,按指定双条件生成新变量?
修正后的Stata代码及说明
原代码存在两处问题:
- Stata中逻辑与运算符为
&(标量场景可用&&),而非英文单词and - 连续用多个
if直接赋值的语法不符合Stata规范,会引发逻辑错误
以下是两种可行的修正方案:
方案1:分步生成与替换
逻辑清晰,便于理解和调试:
// 先将变量初始化为缺失值 gen treatmentBreakdown = . // 满足第一个条件时赋值为1 replace treatmentBreakdown = 1 if treatment == 1 & category_assetprovision == "Accepted" // 满足第二个条件时赋值为0 replace treatmentBreakdown = 0 if treatment == 0 & category_assetprovision == "Refused"
方案2:使用cond()函数一步生成
适合追求代码简洁的场景,通过嵌套条件判断完成赋值:
gen treatmentBreakdown = cond( treatment == 1 & category_assetprovision == "Accepted", 1, cond( treatment == 0 & category_assetprovision == "Refused", 0, . // 不符合两个条件的观测值设为缺失,可按需修改 ) )
两种方案都会让不满足指定两个条件的观测值保持缺失(.),如果需要给其他情况设置特定值,可自行调整对应位置的赋值。
内容的提问来源于stack exchange,提问作者jehangh1998
相关产品推荐
相关产品推荐

