Ta bort rader med alla eller vissa NAs (saknade värden) i data.frame
Jag vill ta bort de rader i denna dataruta som:
a) Innehåller NA
s i alla kolumner. Nedan är min exempeldataruta.
gene hsap mmul mmus rnor cfam
1 ENSG00000208234 0 NA NA NA NA
2 ENSG00000199674 0 2 2 2 2
3 ENSG00000221622 0 NA NA NA NA
4 ENSG00000207604 0 NA NA 1 2
5 ENSG00000207431 0 NA NA NA NA
6 ENSG00000221312 0 1 2 3 2
I princip skulle jag vilja få en dataruta som följande.
gene hsap mmul mmus rnor cfam
2 ENSG00000199674 0 2 2 2 2
6 ENSG00000221312 0 1 2 3 2
b) Innehåller NA
s i endast vissa kolumner, så att jag också kan få detta resultat:
gene hsap mmul mmus rnor cfam
2 ENSG00000199674 0 2 2 2 2
4 ENSG00000207604 0 NA NA 1 2
6 ENSG00000221312 0 1 2 3 2
785
3
Kontrollera också [
complete.cases
] (http://stat.ethz.ch/R-manual/R-patched/library/stats/html/complete.cases.html) :na.omit
är bättre för att bara ta bort allaNA
's.complete.cases
tillåter partiellt urval genom att endast inkludera vissa kolumner i dataframen:Din lösning kan inte fungera. Om du insisterar på att använda
is.na
måste du göra något liknande:men att använda
complete.cases
är mycket tydligare och snabbare.Försök med
na.omit(your.data.frame)
. När det gäller den andra frågan kan du försöka ställa den som en annan fråga (för tydlighetens skull).Jag föredrar följande sätt att kontrollera om raderna innehåller några NAs: