Contar datos perdidos en una o varias columnas
21/10/2025
Cuando estamos limpiando datos frecuentemente nos preguntamos cuántos
datos perdidos tiene una columna. La respuesta se obtiene pidiendo un resumen (summarize()) que cuente la suma de datos perdidos (sum(is.na())) en una columna específica.
library(dplyr)
# contar datos perdidos en una columna
iris |>
summarize(
missings = sum(is.na(Sepal.Length))
)
missings
1 0
¿Pero qué pasa si tienes muchas columnas y quieres revisarlo en todas? No vas a andar escribiendo las columnas una por una… 😵💫
Usando las función across() de {dplyr}, podemos aplicar la misma operación a todas las columnas de un dataframe, y así obtener el conteo de datos perdidos de todas las columnas.
Primero creemos datos perdidos al azar
con el paquete {messy} para ensuciar datos:
library(messy)
iris_m <- messy::make_missing(iris)
Ahora con summarize() calculamos un resumen de datos (es decir, reducir las filas de la tabla a un sólo resultado), especificando con across() que el resumen será a través de todas las columnas (everything()), y finalmente pedimos que el resumen sea la suma (sum()) de los datos de cada columna (.x) que son missing is.na().
library(dplyr)
iris_m |>
# resumir los datos
summarize(
# a través de todas las columnas
across(
everything(),
# contar la cantidad de missings
~sum(is.na(.x))
)
)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 15 17 10 12 21
El mismo código sirve si quieres contar todos los ceros, o todos los valores infinitos, etc.
# contar los ceros
iris_m |>
summarize(
across(everything(),
~sum(.x == 0, na.omit = TRUE)
))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 NA NA NA NA NA
# contar infinitos
iris_m |>
summarize(
across(everything(),
~sum(is.infinite(.x))
))
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 0 0 0 0 0
# etc
Si quieres saber los datos perdidos sólo en las columnas numéricas, en vez de everything() puedes usar where(is.numeric), o si necesitas saberlo en un conjunto de columnas específicas, usa starts_with() o pon sus nombres dentro de c().
También hay otras formas de revisar
datos perdidos, como por ejemplo con
el paquete {visdat} que resume tus datos visualmente.