Stata含缺失值双变量求和:仅双值均缺时设为缺失
Stata生成双变量求和变量(仅双缺失时赋值缺失)
问题说明
egen rowtotal()的默认逻辑本就是:仅当所有输入变量都为系统缺失值(.)时,新变量才返回缺失;否则返回非缺失变量的求和结果(包含0值)。如果你的结果中双缺失情况被赋值为0,大概率是因为你的“缺失值”并非Stata系统缺失值,而是用了其他数值(如999、-99)编码的缺失,需要先转换为系统缺失值。
解决方案
方法1:先求和再修正双缺失
先使用rowtotal生成求和变量,再将双缺失的情况替换为缺失:
egen m_n_4weeks = rowtotal(msf_n_4weeks msm_n_4weeks) replace m_n_4weeks = . if mi(msf_n_4weeks) & mi(msm_n_4weeks)
方法2:直接用条件判断生成
通过cond()函数直接判断双缺失情况,生成符合要求的变量:
gen m_n_4weeks = cond(mi(msf_n_4weeks) & mi(msm_n_4weeks), ., msf_n_4weeks + msm_n_4weeks)
Stata在计算数值和时会自动忽略单个缺失值,只要不是两个变量都缺失,msf_n_4weeks + msm_n_4weeks会返回正确的求和结果;仅当两者都为系统缺失时,新变量赋值为.。
补充:若缺失值为自定义编码
如果你的缺失值是用非.的数值(如999)表示,需要先将其转换为系统缺失值,再使用上述方法:
// 将自定义缺失值转换为系统缺失 replace msf_n_4weeks = . if msf_n_4weeks == 999 replace msm_n_4weeks = . if msm_n_4weeks == 999 // 生成求和变量 egen m_n_4weeks = rowtotal(msf_n_4weeks msm_n_4weeks)
内容的提问来源于stack exchange,提问作者sarah.bourdin
相关产品推荐
相关产品推荐

