2016-08-12 3 views
-2

Ich habe einen großen Datenrahmen, der viele Zeilen und Spalten hat, und ich möchte die Zeilen entfernen, für die mindestens 1 Spalte ist NA/NaN. Unten ist ein kleines Beispiel für den Datenrahmen ich arbeiten bin:R - prüfen, ob NA in irgendeiner Spalte von r Datenrahmen Zeile existiert, dann wenn diese Zeile entfernen

team_id athlete_id GP tm_STL tm_TOV player_WS 
1 13304  75047 1  2  8   NaN 
2 13304  75048 1  2  8 0.28563827 
3 13304  75049 1  2  8   NaN 
4 13304  75050 1  2  8   NaN 
5 13304  75053 1  2  8 0.03861989 
6 13304  75060 1  2  8 -0.15530707 

... wenn auch ein schlechtes Beispiel, weil alle der NaNs in diesem Fall in der letzten Spalte angezeigt. Ich bin mit dem Ansatz which(is.na(df$column_name)) vertraut, um die Zeilen mit NA-Werten aus einer einzelnen Spalte zu erhalten, möchte aber bei Zeilen, bei denen mindestens eine Spalte in einer Zeile eines Datenrahmens einen NA-Wert hat, etwas ähnliches tun.

Danke!

+3

'na.omit' oder' complete.cases' – alistaire

Antwort

8

Versuchen Sie mit complete.cases.

> df <- data.frame(col1 = c(1, 2, 3, NA, 5), col2 = c('A', 'B', NA, 'C', 'D'), 
      col3 = c(9, NaN, 8, 7, 6)) 
> df 
    col1 col2 col3 
1 1 A 9 
2 2 B NaN 
3 3 <NA> 8 
4 NA C 7 
5 5 D 6 
> df[complete.cases(df), ] 
    col1 col2 col3 
1 1 A 9 
5 5 D 6 
+0

Die 'complete.cases' sollten schneller als der Rest sein – akrun

7

na.omit Werke:

na.omit(df) 
## team_id athlete_id GP tm_STL tm_TOV player_WS 
## 2 13304  75048 1  2  8 0.28563827 
## 5 13304  75053 1  2  8 0.03861989 
## 6 13304  75060 1  2  8 -0.15530707 

Es ist ein wenig bequemer als complete.cases wenn Sie Rohrleitungen sind, da es wie dplyr::filter, magrittr::extract oder [ der Teilmenge keine andere Funktion benötigen.

1

Sie können dies verwenden.

df[rowSums(is.na(df))==0,] 

# team_id athlete_id GP tm_STL tm_TOV player_WS 
#2 13304  75048 1  2  8 0.28563827 
#5 13304  75053 1  2  8 0.03861989 
#6 13304  75060 1  2  8 -0.15530707 

Auf diese Weise zählen Sie die Anzahl der NAs pro Zeile. Sie behalten nur die Zeilen, in denen die Summe der Nicht-NAs gleich Null ist.

Verwandte Themen