Stata 中怎么删除至少有三个缺失值的变量们?

今天早上有个培训班的小伙伴问了这样一个问题:

请问一下,有几个变量里面有缺失值,怎么写命令删除里面有至少三个缺失值的那些变量。

首先我们生成一个示例数据集,使用 input 命令可以手动输入一些数据生成示例数据,这里我们生成两个变量 x 和 y,两个变量都含有几个缺失的观测值:

clear all
input x y
1 1
2 .
3 3
. 4
5 .
. 6
7 .
8 .
9 9
10 10
end

生成的数据如下:

使用 count 命令搭配 if misssing() 可以对某个变量中的缺失值进行计数:

count if missing(x)
*> 2

return list
*> scalars:
*> r(N) = 2

运行 return list 可以看到这个值还被存储在了返回值 r(N) 中,这里 x 变量缺失了两个观测值,所以 r(N) = 2。

我们只需要编写一个循环对每个变量的缺失值进行计数然后再决定是否删除该变量即可,foreach i of varlist _all{} 循环可以自动对每个变量进行循环,每次循环 i 会取一个命令的名字:

foreach i of varlist _all{
count if missing(`i')
if r(N) >= 3 {
drop `i'
}
}

这样我们就解决这个问题啦!

点击这里跳转到 RStata 短书平台获取附件:Stata 中怎么删除至少有三个缺失值的变量们?

评论