我有一个包含多个变量的数据集。我想创建一个子样本,它只包含所有变量数据的观察结果,因此任何变量都不会丢失数据。
我知道Stata中的ID year pension age gender
1 2006 300 54 F
2 2007 250 40 M
3 2006 . 45 M
4 2005 . . F
命令,但这不适用于此,因为我不想删除变量,但我想放弃观察。
我在Stack Overflow中找到了类似于我的问题,但是那里使用的统计程序是SAS,我使用的是Stata。 (SAS - Keeping only observations with all variables)。
一个例子(“。”是缺失的数据):
drop
所以在这种情况下我只想保留样本中的ID 1和2以及RUN echo ${NPM_TOKEN}
3和4,因为它包含一些变量的缺失数据。
答案 0 :(得分:2)
关于dropmiss
的声明(在search dropmiss
之后从 Stata期刊网站下载)不正确。
dropmiss
有一个适合此需求的obs
选项。
. sysuse auto, clear
(1978 Automobile Data)
. dropmiss, obs
(0 observations deleted)
. dropmiss, obs any
(5 observations deleted)
但是,dropmiss
被其作者(即我)视为被missings
取代(类似地从 Stata Journal 网站下载)。 missings
不直接支持这一点,因为考虑是否可以通过多次插补处理缺失值被广泛认为是更好的统计实践。
但如果你坚持,missings
也可以帮助解决这个问题:
. sysuse auto, clear
(1978 Automobile Data)
. missings tag, gen(anymiss)
Checking missings in all variables:
5 observations with missing values
. drop if anymiss
(5 observations deleted)
egen
函数rowmiss()
的行为与此类似。
这里的关键是你不需要拼出有关的变量名。但请注意:这些命令可能具有很强的破坏性。
答案 1 :(得分:0)
假设您的变量数量有限,答案很简单。 只需输入:
keep if !missing(var1) & !missing(var2) & !missing(var3)
该命令只保留行,它们具有上述所有三个变量的非缺失值。随意添加更多。