Contar datos perdidos en una o varias columnas

21/10/2025

datos perdidos limpieza de datos

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.

Fecha de publicación:
October 21, 2025
Extensión:
2 minute read, 334 words
Tags:
datos perdidos limpieza de datos
Ver también:
Renombrar archivos desde R
Cargar y unir datos de múltiples hojas de Excel con R
Encuentra diferencias entre objetos de R con {waldo}