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?
4 answers
df[!(is.na(df$start_pc) | df$start_pc==""), ]
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
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
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
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