Chcę wiedzieć, jak pomijać NA
wartości w ramce danych, ale tylko w niektórych kolumnach, które mnie interesują.
Na przykład,
DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))
ale chcę tylko pominąć dane, w których y
jest NA
, dlatego wynik powinien być
x y z
1 1 0 NA
2 2 10 33
na.omit
wydaje się, że usuń wszystkie wiersze zawierają jakiekolwiek NA
.
Czy ktoś może mi pomóc w rozwiązaniu tego prostego pytania?
Ale jeśli teraz zmienię pytanie w stylu:
DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA))
Jeśli chcę tylko pominąć x=na
lub z=na
gdzie mogę umieścić |
funkcję?
NA
s? LubiszcompleteFun(DF, names(DF))
?drop_na()
fromtidyr
robi to samo, ale moim zdaniem jest lepszym rozwiązaniem dzisiaj.Posługiwać się
is.na
DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22)) DF[!is.na(DF$y),]
źródło
na.omit
aby zachłannie usunąć wszystkie wiersze z NA w dowolnej kolumniena.omit(DF)
Hadley ma
tidyr
właśnie tę niesamowitą funkcjędrop_na
library(tidyr) DF %>% drop_na(y) x y z 1 1 0 NA 2 2 10 33
źródło
Użyj „podzbioru”
DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22)) subset(DF, !is.na(y))
źródło
Możliwe jest użycie
na.omit
dodata.table
:na.omit(data, cols = c("x", "z"))
źródło
cols=
argument jest dostępny wdata.table::na.omit
bibliotece. Nie podstawastats::na.omit
.Spróbuj tego:
cc=is.na(DF$y) m=which(cc==c("TRUE")) DF=DF[-m,]
źródło
Pomiń wiersz, jeśli jedna z dwóch określonych kolumn zawiera
<NA>
.źródło
Po prostu spróbuj tego:
Transponuje ramkę danych i pomija puste wiersze, które były „kolumnami” przed transpozycją, a następnie transponujesz ją z powrotem.
źródło