Stata按条件填充unwanted变量报错:求助修正替换缺失值代码
Stata数据处理:填充缺失unwanted值的正确代码
需求回顾
需要实现的逻辑:当当前观测满足以下所有条件时,将缺失的unwanted替换为1:
- 当前观测
preg = 1 - 前一个观测
unwanted = 1 - 当前观测
unwanted为缺失值(.) - 不处理
unwanted = 0的情况
原代码的问题
你写的代码有两处关键错误:
- 语法错误:Stata中条件判断的相等符号是双等号
==,原代码里if unwanted = 1是赋值操作,不是条件判断,这是系统提示语法无效的直接原因。 - 逻辑错误:你用了
unwanted[_n+1](取后一个观测的值),但需求是基于前一个观测的unwanted=1来填充当前值,应该用unwanted[_n-1];同时原代码没有判断当前preg=1和unwanted缺失的核心条件。
正确代码
bysort caseid (i) : replace unwanted = 1 if preg == 1 & missing(unwanted) & unwanted[_n-1] == 1
代码说明
bysort caseid (i):按caseid分组,组内按i升序排序,保证观测的顺序符合你的数据逻辑(前一个观测是时间/序列上的上一条)replace unwanted = 1:对符合条件的观测,将unwanted设为1preg == 1:筛选当前观测preg为1的情况missing(unwanted):筛选当前unwanted为缺失值的情况(比直接写unwanted == .更通用,能识别所有类型的缺失值)unwanted[_n-1] == 1:筛选前一个观测unwanted为1的情况
内容的提问来源于stack exchange,提问作者Sein Kim
相关产品推荐
相关产品推荐

