Posiadamy ramkę danych z pliku CSV. Ramka danych DF
ma kolumny, które zawierają obserwowane wartości i kolumnę (VaR2
), która zawiera datę, w której dokonano pomiaru. Jeśli data nie została zarejestrowana, plik CSV zawiera wartość NA
dla brakujących danych.Podzbiór wierszy zawierających wartości NA (brakujące) w wybranej kolumnie ramki danych
Var1 Var2
10 2010/01/01
20 NA
30 2010/03/01
Chcielibyśmy użycie polecenia podzbiór zdefiniować nową ramkę danych new_DF
tak, że zawiera tylko wierszy, które mają wartość NA'
z kolumny (VaR2
). W podanym przykładzie tylko wiersz 2 będzie zawarty w nowym DF
.
Polecenie
new_DF<-subset(DF,DF$Var2=="NA")
nie działa, wynikający ramki danych nie ma pozycji rzędu.
Jeśli w oryginalnym pliku CSV wartość NA
zostanie wymieniona na NULL
, to samo polecenie wygeneruje oczekiwany wynik: new_DF<-subset(DF,DF$Var2=="NULL")
.
Jak mogę uruchomić tę metodę, jeśli dla ciągu znaków wartość NA
jest podana w oryginalnym pliku CSV?
Dzięki za szybką odpowiedź (to było szybkie)!Rzeczywiście, z powodu dostarczania danych CSV, "NA" to wartości znaków, a twoje drugie stwierdzenie może być bardzo użyteczne. Czy możesz również wyjaśnić swoje pierwsze zdanie? Użycie rowSums() nie jest dla mnie jasne, ponieważ sprawdzę tylko konkretną kolumnę (jest mnóstwo kolumn). Jeśli ta konkretna kolumna (w przykładzie byłaby kolumną Var2) ma tam łańcuch znaków "NA" (zastąpię go twoją drugą instrukcją), wtedy chciałbym wybrać cały wiersz, aby był częścią nowej ramki danych . – John
@John: updated. Chodzi o to, by użyć is.na, błędnie zinterpretowałem, że chciałeś sprawdzić wszystkie zmienne. –
powinno to być 'new_DF <- DF [is.na (DF $ Var),]', tzn. Wydaje się, że istnieje dodatkowe '(' nawias po DF ['? – PatrickT