我的数据集中有5000
个变量和91,534
个观测值。
我想删除所有缺少所有值的变量:
X1 X2 X3
1 2 .
. 3 .
3 . .
. 5 .
X1 X2
1 2
. 3
3 .
. 5
我尝试使用dropmiss
社区贡献的命令,但是即使阅读了帮助文件,该命令似乎也无法正常工作。例如:
dropmiss
command dropmiss is unrecognized
r(199);
missings dropvars
force option required with changed dataset
相反,按照其中一种解决方案的建议,我尝试了以下操作:
ssc install nmissing
nmissing, min(91534)
drop `r(varlist)'
这个替代性的社区贡献命令似乎对我有用。
但是,我想知道是否有更优雅的解决方案,或者使用dropmiss
的方式。
答案 0 :(得分:3)
在最新的Stata中,search dropmiss
或search nmissing
都会告诉您,这两个命令都被 Stata Journal 中的missings
取代。
以下对话框可能会阐明您的问题:
. sysuse auto , clear
(1978 Automobile Data)
. generate empty = .
(74 missing values generated)
. missings dropvars
force option required with changed dataset
r(4);
. missings dropvars, force
Checking missings in make price mpg rep78 headroom trunk weight length turn
displacement gear_ratio foreign empty:
74 observations with missing values
note: empty dropped
missings dropvars
一旦安装,将删除所有完全丢失的变量,但如果尚未force
d内存中的数据集,则需要save
选项。
答案 1 :(得分:3)
您可以简单地循环遍历数据集中的所有变量,并使用capture
和assert
命令测试哪些变量的所有值均缺失。
这种方法的优势在于,您只能使用内置 Stata命令执行此操作:
clear
input X1 X2 X3
1 2 .
. 3 .
3 . .
. 5 .
end
list
+--------------+
| X1 X2 X3 |
|--------------|
1. | 1 2 . |
2. | . 3 . |
3. | 3 . . |
4. | . 5 . |
+--------------+
foreach var of varlist _all {
capture assert missing(`var')
if !_rc {
drop `var'
}
}
list
+---------+
| X1 X2 |
|---------|
1. | 1 2 |
2. | . 3 |
3. | 3 . |
4. | . 5 |
+---------+
答案 2 :(得分:-2)
直接输入以下内容即可:
ssc install missings
missings dropvars _all
这将删除所有观察值都缺失的变量。