2013-05-26 14 views
8

Sto usando R per generare esempi di come gestire i dati mancanti per la classe di statistiche che sto insegnando. Un metodo richiede la generazione di una "variabile binaria con valori mancanti", con 0 per i casi che contengono valori mancanti e 1 senza valori mancanti. Ad esempioR-genera una "variabile valori mancanti"

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 

desidero generare una variabile M, tale che

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

Sembra questo dovrebbe essere semplice, data la capacità di R per gestire i valori mancanti. Il più vicino che ho trovato è m <-ifelse(is.na(missguns),0,1), ma tutto ciò che fa è generare una nuova intera matrice di dati con 0 o 1 che indica la mancanza. Tuttavia, voglio solo una variabile che indica se una riga contiene valori mancanti.

risposta

9

complete.cases fa esattamente quello che vuoi.

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

Si può costringere a numerici o interi:

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

Grazie-che ha fatto il trucco! Proprio come un aggiornamento, stavo implementando il t-test di Rubin. ecco il codice che ho generato. Il set di dati è "missguns" (dataset "guns" ma ho incluso i valori mancanti) e una delle variabili è "urban". missing <-as.integer (complete.cases (missguns)) practice <-cbind (missguns, missing) missing <-practice [practice $ missing == 0,] completa <-practice [pratica $ mancante == 1 ,] t.test (mancante $ urbano, completo $ urbano) –