vacio una tabla seleccionar filas eliminar datos data crear contar con como columnas r dataframe na

una - seleccionar datos en r



Omitir filas que contengan una columna especĂ­fica de NA (5)

Hadley''s tidyr acaba de obtener esta increíble función drop_na

library(tidyr) DF %>% drop_na(y) x y z 1 1 0 NA 2 2 10 33

Quiero saber cómo omitir los valores de NA en un marco de datos, pero solo en algunas columnas que me interesan.

Por ejemplo,

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22))

pero solo quiero omitir los datos donde y es NA , por lo tanto el resultado debe ser

x y z 1 1 0 NA 2 2 10 33

na.omit parece eliminar todas las filas contienen cualquier NA .

¿Puede alguien ayudarme con esta simple pregunta?

Pero si ahora cambio la pregunta como:

DF <- data.frame(x = c(1, 2, 3,NA), y = c(1,0, 10, NA), z=c(43,NA, 33, NA))

Si quiero omitir solo x=na o z=na , ¿dónde puedo colocar el | ¿en función?


Prueba esto:

cc=is.na(DF$y) m=which(cc==c("TRUE")) DF=DF[-m,]


Puede usar la función complete.cases y ponerla en una función de esta manera:

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22)) completeFun <- function(data, desiredCols) { completeVec <- complete.cases(data[, desiredCols]) return(data[completeVec, ]) } completeFun(DF, "y") # x y z # 1 1 0 NA # 2 2 10 33 completeFun(DF, c("y", "z")) # x y z # 2 2 10 33

EDITAR: solo devuelve filas sin NA

Si desea eliminar todas las filas con al menos una NA en cualquier columna, simplemente use la función complete.cases hacia arriba:

DF[complete.cases(DF), ] # x y z # 2 2 10 33

O si completeFun ya está arraigado en su flujo de trabajo;)

completeFun(DF, names(DF))


Use ''subconjunto''

DF <- data.frame(x = c(1, 2, 3), y = c(0, 10, NA), z=c(NA, 33, 22)) subset(DF, !is.na(y))


Use 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),]