2013-05-26 55 views
8

我正在使用R生成如何处理我正在教的统计类缺失数据的示例。一种方法需要生成“缺失值二进制变量”,其中0表示包含缺失值的情况,1表示没有缺失值。例如R-生成“缺失值变量”

对于
n X Y Z 
1 4 300 2 
2 8 400 4 
3 10 500 7 
4 18 NA 10 
5 20 50 NA 
6 NA 1000 5 

我想生成一个变量M,这样

n m 
1 1 
2 1 
3 1 
4 0 
5 0 
6 0 

看来这应该是简单的,给定的R的处理缺失值的能力。我发现的最接近的是m <-ifelse(is.na(missguns),0,1),但所有这些都会生成一个新的整数据矩阵,其中0或1表示缺失。但是,我只想要一个变量指示行是否包含缺失值。

回答

9

complete.cases确实如你所愿。

complete.cases(x) 
## [1] TRUE TRUE TRUE FALSE FALSE FALSE 

您可以强制到数字或整数:

as.integer(complete.cases(x)) 
## [1] 1 1 1 0 0 0 
+0

感谢,认为没有的伎俩!就像更新一样,我正在实施Rubin的t检验。这里是我生成的代码。数据集是“missguns”(“枪支”数据集,但我包含缺失值),其中一个变量是“城市”。缺少<-as.integer(complete.cases(missguns)) practice <-cbind(missguns,missing) missing <-practice [practice $ missing == 0,] complete <-practice [practice $ missing == 1 ,] t.test(缺少$ urban,完成$ urban) –