Jyo*_*hsa 4 stata stata-macros
我的数据集中有5000变量和观察结果。91,534
我想删除所有缺少所有值的变量:
X1 X2 X3
1 2 .
. 3 .
3 . .
. 5 .
Run Code Online (Sandbox Code Playgroud)
X1 X2
1 2
. 3
3 .
. 5
Run Code Online (Sandbox Code Playgroud)
我尝试使用dropmiss 社区贡献的命令,但即使在阅读帮助文件后,它似乎对我不起作用。例如:
dropmiss
command dropmiss is unrecognized
r(199);
missings dropvars
force option required with changed dataset
Run Code Online (Sandbox Code Playgroud)
相反,按照解决方案之一的建议,我尝试了以下方法:
ssc install nmissing
nmissing, min(91534)
drop `r(varlist)'
Run Code Online (Sandbox Code Playgroud)
这个社区提供的替代命令似乎对我有用。
但是,我想知道是否有更优雅的解决方案,或者使用dropmiss.
在最新的 Stata 中,search dropmiss或search nmissing会告诉您这两个命令都被Stata Journalmissings所取代。
下面的对话可能会解答你的问题:
. 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
Run Code Online (Sandbox Code Playgroud)
missings dropvars一旦安装,将删除所有完全丢失的变量,除非force内存中的数据集尚未被save删除,否则您需要该选项。
小智 5
您可以简单地循环数据集中的所有变量,并使用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 |
+---------+
Run Code Online (Sandbox Code Playgroud)