Stata中如何仅对单个变量删除缺失值且不影响其他变量?
解决Stata中单独处理分组变量缺失值的方法
Stata的观测以行为单位,直接用drop if missing(var)会删除整行,导致另一变量的对应观测也被移除。要实现仅清理单个分组变量的缺失值且不影响另一变量,可参考以下方法:
方法1:分数据集保存干净的分组变量
如果需要将A、B的非缺失值分别保存为独立的数据集,互不干扰:
- 处理A变量(前50个观测):
preserve // 暂存当前数据集状态 keep if _n <= 50 // 筛选前50行 drop if missing(A) // 删除A的缺失值行 save "A_clean.dta", replace // 保存清理后的A数据集 restore // 恢复原数据集
- 处理B变量(后50个观测):
preserve keep if _n > 50 // 筛选后50行 drop if missing(B) // 删除B的缺失值行 save "B_clean.dta", replace restore
方法2:在原数据集生成无缺失的分组变量
如果想保留原数据集的所有观测,同时生成仅包含非缺失值的A、B版本:
// 生成A的非缺失版本(仅在前50行有效) gen A_clean = A if !missing(A) & _n <= 50 // 生成B的非缺失版本(仅在后50行有效) gen B_clean = B if !missing(B) & _n > 50
查看非缺失值时可直接过滤:
list A_clean if !missing(A_clean) list B_clean if !missing(B_clean)
方法3:直接查看非缺失值(无需修改数据集)
若仅需查看A、B的非缺失值,无需修改或保存数据:
// 查看A的非缺失值(前50行) list A if _n <=50 & !missing(A) // 查看B的非缺失值(后50行) list B if _n >50 & !missing(B)
内容的提问来源于stack exchange,提问作者abnik
相关产品推荐
相关产品推荐

