Usuń wiersze z pustymi wartościami w jednej kolumnie

Pracuję nad dużym zestawem danych, z niektórymi wierszami z NAs, a innymi z spacjami:

df <- data.frame(ID = c(1:7),                                   
         home_pc = c("","CB4 2DT", "NE5 7TH", "BY5 8IB", "DH4 6PB","MP9 7GH","KN4 5GH"),               
         start_pc = c(NA,"Home", "FC5 7YH","Home", "CB3 5TH", "BV6 5PB",NA),               
         end_pc = c(NA,"CB5 4FG","Home","","Home","",NA))

Jak usunąć NAs i spacje za jednym zamachem (w kolumnach start_pc i end_pc)? Kiedyś używałem:

df<- df[-which(is.na(df$start_pc)), ]

... aby usunąć NAs - czy istnieje podobne polecenie do usuwania spacji?

Author: Velimir Mlaker, 2012-02-03

4 answers

 df[!(is.na(df$start_pc) | df$start_pc==""), ]
 59
Author: sgibb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-03 10:18:53

Jest to ten sam konstruktor - po prostu testuj puste ciągi zamiast NA:

Spróbuj tego:

df <- df[-which(df$start_pc == ""), ]

W rzeczywistości, patrząc na Twój kod, nie potrzebujesz which, ale zamiast tego użyj negacji, aby uprościć ją do:

df <- df[!(df$start_pc == ""), ]
df <- df[!is.na(df$start_pc), ]

I oczywiście możesz połączyć te dwa stwierdzenia w następujący sposób:

df <- df[!(df$start_pc == "" | is.na(df$start_pc)), ]

I uprościć to jeszcze bardziej za pomocą with:

df <- with(df, df[!(start_pc == "" | is.na(start_pc)), ])

Możesz również przetestować niezerową Długość łańcucha za pomocą nzchar.

df <- with(df, df[!(nzchar(start_pc) | is.na(start_pc)), ])

Zastrzeżenie: nie testowałem żadnego z tego kodu. Proszę dać mi znać, jeśli gdzieś są Błędy składniowe

 21
Author: Andrie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-02-03 11:03:10

Łatwe podejście byłoby wykonanie wszystkich pustych komórek NA i tylko utrzymanie kompletnych przypadków. Możesz również szukać na.pomiń przykłady. Jest to szeroko dyskutowany temat.

Df [df==""]

Df

 2
Author: user6074085,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-16 22:18:40

Zrobiłem coś takiego, aby usunąć wiersze ze spacjami w jednej zmiennej : DF

 1
Author: user6164045,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-06 00:27:55