Удалить переменные со всеми пропущенными значениями
Я имею 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
,
2 ответа
В современной стате либо search dropmiss
или же search nmissing
скажет вам, что обе команды заменены missings
из журнала Stata.
Следующий диалог может осветить ваш вопрос:
. sysuse auto , clear
(1978 Automobile Data)
. gen 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
вариант, если набор данных в памяти не был save
д.
Вы можете просто перебрать все переменные в вашем наборе данных и использовать 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 |
+---------+
Прямой подход заключается в наборе:
ssc install missings
missings dropvars _all
Это отбросит все переменные, чьи наблюдения все отсутствуют.