Se muestran diferentes formas en R de como eliminar valores nulos, conocidos como NA de un dataframe definido inicialmente.
Cargar datos para ejemplos
id <- c(1,4,3,NA,7,6,9,4,0,8) texto <- c("a", "b", NA, "NA","a","b","b","b","c","d") valor <- c(2,8,7,5,1,9,4,3,7,2) datos <- data.frame(id=id,texto=texto,valor=valor) head(datos, n=10)
## id texto valor
## 1 1 a 2
## 2 4 b 8
## 3 3 <NA> 7
## 4 NA NA 5
## 5 7 a 1
## 6 6 b 9
## 7 9 b 4
## 8 4 b 3
## 9 0 c 7
## 10 8 d 2
Contar número de nulos por columna
sapply(datos, function(x) sum(is.na(x)))
## id texto valor
## 1 1 0
Contar número de nulos por columna (forma 2)
summarise_all(datos, funs(sum(is.na(.))))
Eliminar filas con nulos en una columna concreta
datos <- datos[!is.na(datos$id),] datos <- datos[!is.na(datos$texto),] head(datos, n= 8)
## id texto valor
## 1 1 a 2
## 2 4 b 8
## 5 7 a 1
## 6 6 b 9
## 7 9 b 4
## 8 4 b 3
## 9 0 c 7
## 10 8 d 2
Eliminar todas las filas que contengan algun valor nulo
delete.na <- function(df, n=0) { df[rowSums(is.na(df)) <= n,] } delete.na(datos)
Eliminar todas las filas que contengan algun valor nulo (forma simple)
datos <- na.omit(datos)
El código fuente lo podeis encontrar en GitHub:
https://github.com/diegocalvobarreno/ejemplos-en-R/blob/master/Eliminar-datos-nulos-en-R.R
Gracias, muy útil la información.
hola!
quisera saber cómo hago para quitar la función omit después de haberla usado?
Gracias por la info, me ha ayudado mucho!
Buena. Les hago una consulta. Resulta que tengo un archivo csv, en una de las columnas llamada genero, hay varios valores nulos o NA, quería eliminar dichos campos vacíos para cargar dicho archivo en un nuevo objeto y poder manipularlo como yo quiera. El tema es que al usar la función na.omit no elimina los nulos sino que los acomoda al final de la columna. Les muestro lo que hice
# Acá cargo el archivo csv
archivocsv<-read.csv("data/peliculas.csv")
# Y en este paso elimino los nulos
archivocsv2<-na.omit(archivocsv["genero"])
Donde puede estar el error??
creo que debes escribir el nombre de la matriz y no solo la columna.
tengo una base de datos donde hay registros que en una o mas variables tienen 99 como signo de que es celda vacía. como se hace para que r no lo tenga en cuenta
Puedes convertirlos en NA y luego los eliminas con na.omit
por ejemplo
nombre_df[nombre_df == 99] <- NA
Donde halla un 99 se remplazará por NA, tienes que tener cuidado si una columna completa está llena con 99 porque si es así al eliminar los NA, se te eliminarán todas las observaciones.
Buenas Angel,
Crea un nuevo conjunto de datos al que le apliques una reestricción de que no meta los 99, te recomiendo revisar el apartado de filtros del paquete dplyr.
Aquí te dejo el enlace
https://www.diegocalvo.es/manipulacion-datos-r-forma-simple/
Hola,
Cómo puedo hacer para eliminar filas que contienen valores vacíos? No son NAs sino que no tienen ningún valor
Muchas gracias por tu ayuda
Puedes convertirlos en NA y luego los eliminas con na.omit
por ejemplo
nombre_df[nombre_df == » «] <- NA
Donde halla un una celda vacía se remplazará por NA, tienes que tener cuidado si una columna completa está llena con 99 porque si es así al eliminar los NA, se te eliminarán todas las observaciones.
Puedes convertirlos en NA y luego los eliminas con na.omit
por ejemplo
nombre_df[nombre_df == 99] <- NA
Donde halla un 99 se remplazará por NA, tienes que tener cuidado si una columna completa está llena con 99 porque si es así al eliminar los NA, se te eliminarán todas las observaciones.