由于伦理的原因,调查问卷很多题目受试者不愿意回答的话会跳过,因此数据集中就会包含很多缺失变量,如果一条记录缺失值超过一定比例,我们希望删除此条记录,该如何用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”)。