2016-06-17 6 views
9

Voglio utilizzare na.omit (dati) per il seguente set di dati di esempio, ma su una condizione in modo da rimuovere le righe con NA solo quando sono presenti, diciamo "oltre il 30%" delle colonne.Come rimuovere righe con NA solo se sono presenti in più di una certa percentuale di colonne?

dati:

 C1  C2  C3  C4  C5 
Gene1 0.07 NA  0.05 0.07 0.07 
Gene2 0.2 0.18 0.16 0.15 0.15 
Gene3 NA  0.93 0.9 NA  0.92 
Gene4 0.32 0.05 0.12 0.13 0.05 
Gene5 0.44 0.53 0.46 0.03 0.47 
Gene6 NA  0.34 NA  0.8 NA 
Gene7 0.49 0.55 0.67 0.49 0.89 
Gene8 0.25 NA  0.49 NA  NA 
Gene9 0.1 0.1 0.05 NA  0.09 

Quindi il file risultante dovrebbe essere la seguente:

 C1  C2  C3  C4  C5 
Gene1 0.07 NA  0.05 0.07 0.07 
Gene2 0.2 0.18 0.16 0.15 0.15 
Gene4 0.32 0.05 0.12 0.13 0.05 
Gene5 0.44 0.53 0.46 0.03 0.47 
Gene7 0.49 0.55 0.67 0.49 0.89 
Gene9 0.1 0.1 0.05 NA  0.09 

Grazie per l'aiuto!

+0

Come sono stai decidendo quali valori di 'NA' rimuovere? –

+0

Ciao Tim, non dipende da quali NA. È solo se ci sono più del 30% di NA per una particolare riga, quindi per rimuovere completamente la riga. – Letin

+0

Cosa hai provato? Mostra un po 'di codice. –

risposta

7

È possibile sottoinsieme sulla base delle somme delle righe di NA valori:

test[!rowSums(is.na(test)) > ncol(test)*.3,] 

     C1 C2 C3 C4 C5 
Gene1 0.07 NA 0.05 0.07 0.07 
Gene2 0.20 0.18 0.16 0.15 0.15 
Gene4 0.32 0.05 0.12 0.13 0.05 
Gene5 0.44 0.53 0.46 0.03 0.47 
Gene7 0.49 0.55 0.67 0.49 0.89 
Gene9 0.10 0.10 0.05 NA 0.09 
+7

Vorrei andare per 'dat [rowMeans (is.na (dat)) <= .3,]' –

4

Ecco un'altra versione con Reduce

df1[!Reduce(`+`, lapply(df1, is.na)) > ncol(df1)*0.3,] 
#  C1 C2 C3 C4 C5 
#Gene1 0.07 NA 0.05 0.07 0.07 
#Gene2 0.20 0.18 0.16 0.15 0.15 
#Gene4 0.32 0.05 0.12 0.13 0.05 
#Gene5 0.44 0.53 0.46 0.03 0.47 
#Gene7 0.49 0.55 0.67 0.49 0.89 
#Gene9 0.10 0.10 0.05 NA 0.09 
+2

dat [Riduci ('+', lapply (dat, is.na))

4

Ed ecco un'altra opzione utilizzando applicare

dat[apply(dat,1,function(x){sum(is.na(x))/dim(dat)[2]})<0.3,] 

#C1 C2 C3 C4 C5 
#Gene1 0.07 NA 0.05 0.07 0.07 
#Gene2 0.20 0.18 0.16 0.15 0.15 
#Gene4 0.32 0.05 0.12 0.13 0.05 
#Gene5 0.44 0.53 0.46 0.03 0.47 
#Gene7 0.49 0.55 0.67 0.49 0.89 
#Gene9 0.10 0.10 0.05 NA 0.09 
Problemi correlati