Stata如何删除缺失变量超过一定比例的记录?

由于伦理的原因,调查问卷很多题目受试者不愿意回答的话会跳过,因此数据集中就会包含很多缺失变量,如果一条记录缺失值超过一定比例,我们希望删除此条记录,该如何用Stata实现呢?

演示数据如下:

sysuse auto, clear

每条记录总变量数为totalcount,有缺失值的变量数为misscount,如果缺失的变量数超过10%则删除该记录,Stata代码如下:

gen misscount=0
gen totalcount=0
foreach var of list * {
  replace misscount=misscount+1 if missing(`var')
  replace totalcount=totalcount+1
}
summ misscount,detail
global p=0.1
drop if (misscount/totalcount)>$p

注意:要区分跳转导致的缺失值(Not Applicable)和未填/拒答的缺失值(No Response),前者可编码为-9等特殊值,而非缺失值(“.”或“.a-.z”)。