You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:07:03