Cómo utilizar na.rm para tratar los valores perdidos en R
Establecimos na.rm = TRUE en las funciones comunes de R para excluir los valores perdidos (NA). Esto nos ayuda a calcular estadísticas precisas y aumenta la fiabilidad de nuestros resultados.
Los datos se generan y consumen a un ritmo industrial para impulsar decisiones empresariales clave. Sin embargo, un reto habitual en el análisis de datos es la presencia de valores perdidos. Esto puede sesgar los resultados, por lo que es inevitable que cualquier analista de datos los maneje con eficacia. En R, una de las herramientas fundamentales para gestionar los valores perdidos es el parámetro na.rm.
Este post explica la importancia de tratar los datos que faltan, cómo funciona na.rm en R, demuestra su uso en varias funciones y concluye con la discusión de algunas técnicas alternativas para identificar y tratar los datos que faltan.
La respuesta breve: ¿Qué es na.rm?
El parámetro na.rm en R significa "eliminar NA" e ignora los valores NA (que faltan) durante los cálculos. Fijando na.rm = TRUE, funciones como mean(), sum(), min(), max(), median(), y sd() calculan los resultados sin que les afecten los valores perdidos.
El parámetro na.rm, escrito en minúsculas, incluye un valor booleano -TRUE o FALSE. Cuando fijamos na.rm = TRUE, R excluye los valores de NA de los cálculos. Sin este parámetro, las funciones devolverían NA si hay valores perdidos en los datos. Echa un vistazo.
vector_with_na <- c(1,2,NA)
sum(vector_with_na, na.rm =TRUE)# removes NA values — returns 3
sum(vector_with_na)# includes NA values — returns NA
sum(vector_with_na, na.rm =FALSE)# includes NA values — returns NACon la tecnología de
Consulta el curso Introducción a R para saber más sobre programación básica en R.
¿Por qué utilizar na.rm?
Manejar los valores perdidos es crucial en el análisis de datos para garantizar resultados precisos, ya que pueden afectar significativamente a los cálculos estadísticos, llevando inadvertidamente a conclusiones incorrectas. Utilizar na.rm permite evitar errores saltándose estos valores perdidos, realizando así cálculos fiables y manteniendo la integridad de los datos.
El curso de Limpieza de Datos en R es valioso para mejorar nuestras habilidades de análisis de datos.
Funciones comunes utilizando na.rm: Algunos ejemplos prácticos
Ahora, vamos a entender cómo utilizar na.rm en R. Varias funciones de R incorporan el parámetro na.rm (fijado en FALSE por defecto). He aquí algunos ejemplos comunes:
sum()
Como su nombre indica, el sum() calcula el total de valores de un vector. Vamos a crear un vector llamado vector_with_na, que utilizaremos a lo largo de este tutorial.
vector_with_na <- c(1,2,NA,4)
sum(vector_with_na)# Returns NA
sum(vector_with_na, na.rm =TRUE)# Returns 7Con la tecnología de
mean()
Utilizando el mismo ejemplo, la función mean() calcula la media, es decir, la media de los valores de nuestro vector.
mean(vector_with_na)# Returns NA
mean(vector_with_na, na.rm =TRUE)# Returns 2.33Con la tecnología de
sd()
Siguiendo con vector_with_na, en sd() se calcula la desviación típica del vector.
sd(vector_with_na)# Returns NA
sd(vector_with_na, na.rm =TRUE)# Returns 1.53Con la tecnología de
min()
El min() encuentra el valor mínimo.
min(vector_with_na)# Returns NA
min(vector_with_na, na.rm =TRUE)# Returns 1Con la tecnología de
max()
max() encuentra el valor máximo.
max(vector_with_na)# Returns NA
max(vector_with_na, na.rm =TRUE)# Returns 4Con la tecnología de
median()
median() encuentra el valor medio cuando se ordenan.
median(vector_with_na)# Returns NA
median(vector_with_na, na.rm =TRUE)# Returns 2Con la tecnología de
Observa que en ausencia de na.rm = TRUE todas estas funciones agregadas devuelven NA.
Fijando na.rm = TRUE, estas funciones excluyen los valores de NA, lo que conduce a cálculos precisos y significativos. El tema de conocimientos Fundamentos de programación en R puede ser un buen recurso para comprender mejor el uso y la sintaxis de estas funciones.
Tratamiento de valores perdidos en diferentes estructuras de datos
En los vectores, na.rm puede utilizarse directamente dentro de las funciones para excluir los valores perdidos. Los ejemplos compartidos en la sección anterior son todos ejemplos de na.rm en acción sobre vectores.
Marcos de datos
Para los marcos de datos, na.rm puede aplicarse dentro de funciones utilizadas en columnas específicas o a través de filas utilizando apply(), como se muestra a continuación:
MARGIN: argumento para identificar dónde aplicar la función:
MARGIN=1 para manipular filas
MARGIN=2 para manipular columnas
MARGIN=c(1,2) para manipular filas y columnas
FUN: indica qué función aplicar. Se pueden aplicar funciones incorporadas como mean(), median(), sum(), min(), max(), y funciones definidas por el usuario.
Vamos a crear un marco de datos para que nos sirva de referencia a lo largo de este tutorial.
dataframe_with_na <- data.frame(col1 = c(1,NA,3,6), col2 = c(4,5,NA,7))
print(dataframe_with_na)# Returns# col1 col2# 1 1 4# 2 NA 5# 3 3 NA# 4 6 7
apply(dataframe_with_na,1, mean)# Returns# [1] 2.5 NA NA 6.5
apply(dataframe_with_na,1, mean, na.rm =TRUE)# Returns# [1] 2.5 5.0 3.0 6.5
apply(dataframe_with_na,2, mean)# Returns# col1 col2 # NA NA
apply(dataframe_with_na,2, mean, na.rm =TRUE)# Returns # col1 col2 # 3.333333 5.333333Con la tecnología de
Listas
La función lapply() en R se utiliza para aplicar una función especificada a cada elemento de una lista, vector o marco de datos, y devuelve una lista de la misma longitud. Esta función no requiere un parámetro MARGIN, ya que aplica automáticamente la operación a todos los elementos.
vector_with_na: La lista, vector o marco de datos de entrada.
fun: La función que debe aplicarse a cada elemento de datos de entrada.
Vamos a entender lapply() con un ejemplo de lista. Aquí tenemos una lista de colecciones (item_1 y item_2) con elementos similares al marco de datos (dataframe_with_na). Nuestro objetivo es encontrar la media de cada colección.
list_with_na <- list(item_1=c(1,NA,3,6), item_2=c(4,5,NA,7))
lapply(list_with_na, mean)# Returns# $item_1# [1] NA# # $item_2# [1] NA
lapply(list_with_na, mean, na.rm =TRUE)# Returns# $item_1# [1] 3.333333# # $item_2# [1] 5.333333Con la tecnología de
La función sapply() es similar a lapply() pero devuelve una matriz o array en lugar de una lista. Utilicemos la lista (list_with_na) y el sapply() para calcular la media de los valores de cada colección que contiene.
sapply(list_with_na, mean)# Returns# a b # NA NA
sapply(list_with_na, mean, na.rm =TRUE)# Returns# a b # 3.333333 5.333333Con la tecnología de
Ahora, vamos a utilizar el marco de datos (dataframe_with_na) y el sapply() para calcular la suma de los valores de cada columna.
sapply(dataframe_with_na, sum)# Returns# col1 col2 # NA NA
sapply(dataframe_with_na, sum, na.rm=TRUE)# Returns# col1 col2 # 10 16Con la tecnología de
na.omit(): Esta función elimina todas las filas que contienen valores NA en un marco de datos. Vamos a entenderlo con un ejemplo:
na.omit(dataframe_with_na)# Returns# col1 col2# 1 1 4# 4 6 7Con la tecnología de
complete.cases(): Por otra parte, complete.cases() identifica las filas sin ningún valor NA y devuelve un bool correspondiente a cada fila (FALSE para las filas con NA y viceversa). Se puede utilizar para filtrar los valores no ausentes en el marco de datos, como se muestra a continuación.
complete.cases(dataframe_with_na)# Returns# [1] TRUE FALSE FALSE TRUE
dataframe_with_na[complete.cases(dataframe_with_na),]# Returns# col1 col2# 1 1 4# 4 6 7Con la tecnología de
Técnicas avanzadas para tratar valores perdidos
Además de na.rm, R ofrece métodos avanzados para tratar los datos que faltan:
Utilizar is.na() para identificar valores perdidos
is.na() se puede aplicar directamente sobre un vector o marco de datos para identificar los datos que faltan. Devuelve un TRUE correspondiente a cada valor perdido.
Curiosamente, la funciónsummary() difiere del uso de na.rm para tratar los valores perdidos. Por defecto, summary() excluye automáticamente los valores que faltan al calcular las estadísticas de resumen e informa posteriormente del número de NAs presentes en los datos.
Vamos a ejecutar summary() en el vector vector_with_na:
summary(vector_with_na)#Returns# Min. 1st Qu. Median Mean 3rd Qu. Max. NA's # 1.000 1.500 2.000 2.333 3.000 4.000 1Con la tecnología de
Y en el marco de datos dataframe_with_na:
summary(dataframe_with_na)# Returns# col1 col2 # Min. :1.00 Min. :4.00 # 1st Qu.:2.50 1st Qu.:4.75 # Median :3.00 Median :5.00 # Mean :3.25 Mean :5.25 # 3rd Qu.:3.75 3rd Qu.:5.50 # Max. :6.00 Max. :7.00 Con la tecnología de
El curso R Intermedio ofrece una visión en profundidad para los interesados en técnicas más avanzadas de tratamiento de datos.
Buenas prácticas para tratar los valores perdidos
Manejar eficazmente los valores perdidos implica varias buenas prácticas:
Comprueba siempre si faltan valores
Identifica y comprende el alcance de los datos que faltan antes de realizar los cálculos. El siguiente ejemplo muestra que el marco de datos tiene un total de 2 valores perdidos.
print(dataframe_with_na)# Returns# col1 col2# 1 1 4# 2 NA 5# 3 3 NA# 4 6 7
sum(is.na(dataframe_with_na))# Returns# [1] 2Con la tecnología de
Utiliza comprobaciones condicionales
Comprueba siempre la presencia de datos omitidos y aplica en consecuencia cualquier técnica de imputación, asegurándote de que todos los casos extremos se tratan bien.
Comprende por qué faltan datos y elige un método adecuado para tratarlos -eliminación o imputación-.
Para un enfoque estructurado del análisis de datos y el tratamiento de los valores perdidos, el programa Limpieza de datos en Rpuede ser un gran recurso.
Conclusión
Comprender y utilizar na.rm es clave para garantizar un análisis de datos fiable y preciso. Practica el uso de na.rm en proyectos de R y explora técnicas avanzadas para tratar los datos omitidos de forma exhaustiva.
Para seguir aprendiendo, explora estos recursos adicionales:
Limpieza de datos: Mejora tus habilidades de análisis de datos con nuestro curso de Limpieza de Datos en R.
Introducción a R: Iníciate en la programación en R con nuestro cursoIntroducción a R.
Análisis de regresión: Sumérgete en las técnicas de regresión y aprende estadística con nuestro cursoIntroducción a la regresión en R.
Preguntas frecuentes
¿Qué es el parámetro na.rm en R?⌄
El parámetro na.rm en R significa "eliminar NA". Cuando se establece en TRUE, indica a las funciones que ignoren los valores NA (que faltan) durante los cálculos, garantizando resultados precisos.
¿Cómo se utiliza na.rm en las funciones habituales de R?⌄
Puedes utilizar na.rm en funciones como sum(), mean(), sd(), min(), max(), y median() configurando na.rm = TRUE para excluir los valores perdidos de los cálculos.
¿Por qué es importante tratar los valores perdidos en el análisis de datos?⌄
Los valores perdidos pueden sesgar los resultados y llevar a conclusiones inexactas. Manejarlos eficazmente garantiza la fiabilidad de los cálculos y mantiene la integridad de los datos.
¿Se puede utilizar na.rm con marcos de datos y listas en R?⌄
Sí, na.rm se puede utilizar con marcos de datos mediante funciones como apply(), y con listas mediante lapply() y sapply(), para excluir los valores perdidos durante las operaciones sobre estas estructuras de datos.
¿Cuáles son algunas técnicas avanzadas para tratar los valores perdidos en R?⌄
Además de na.rm, las técnicas avanzadas incluyen el uso de is.na() para identificar valores perdidos, aplicar métodos de imputación para sustituirlos y aprovechar funciones como na.omit() y complete.cases() para una limpieza de datos más compleja.
Explore las expresiones regulares en R, por qué son importantes, las herramientas y funciones para trabajar con ellas, patrones regex comunes y cómo utilizarlos.
Explora cuatro formas de detectar valores NaN en Python, utilizando NumPy y Pandas. Aprende las diferencias clave entre NaN y None para limpiar y analizar datos de manera eficiente.
Los datos se generan y consumen a un ritmo industrial para impulsar decisiones empresariales clave. Sin embargo, un reto habitual en el análisis de datos es la presencia de valores perdidos. Esto puede sesgar los resultados, por lo que es inevitable que cualquier analista de datos los maneje con eficacia. En R, una de las herramientas fundamentales para gestionar los valores perdidos es el parámetro
na.rm.Este post explica la importancia de tratar los datos que faltan, cómo funciona
na.rmen R, demuestra su uso en varias funciones y concluye con la discusión de algunas técnicas alternativas para identificar y tratar los datos que faltan.La respuesta breve: ¿Qué es na.rm?
El parámetro
na.rmen R significa "eliminar NA" e ignora los valoresNA(que faltan) durante los cálculos. Fijandona.rm = TRUE, funciones comomean(),sum(),min(),max(),median(), ysd()calculan los resultados sin que les afecten los valores perdidos.El parámetro
na.rm, escrito en minúsculas, incluye un valor booleano -TRUEoFALSE. Cuando fijamosna.rm = TRUE, R excluye los valores deNAde los cálculos. Sin este parámetro, las funciones devolveríanNAsi hay valores perdidos en los datos. Echa un vistazo.Consulta el curso Introducción a R para saber más sobre programación básica en R.
¿Por qué utilizar na.rm?
Manejar los valores perdidos es crucial en el análisis de datos para garantizar resultados precisos, ya que pueden afectar significativamente a los cálculos estadísticos, llevando inadvertidamente a conclusiones incorrectas. Utilizar
na.rmpermite evitar errores saltándose estos valores perdidos, realizando así cálculos fiables y manteniendo la integridad de los datos.El curso de Limpieza de Datos en R es valioso para mejorar nuestras habilidades de análisis de datos.
Funciones comunes utilizando na.rm: Algunos ejemplos prácticos
Ahora, vamos a entender cómo utilizar
na.rmen R. Varias funciones de R incorporan el parámetrona.rm(fijado enFALSEpor defecto). He aquí algunos ejemplos comunes:sum()
Como su nombre indica, el
sum()calcula el total de valores de un vector. Vamos a crear un vector llamadovector_with_na, que utilizaremos a lo largo de este tutorial.mean()
Utilizando el mismo ejemplo, la función
mean()calcula la media, es decir, la media de los valores de nuestro vector.sd()
Siguiendo con
vector_with_na, ensd()se calcula la desviación típica del vector.min()
El
min()encuentra el valor mínimo.max()
max()encuentra el valor máximo.median()
median()encuentra el valor medio cuando se ordenan.Observa que en ausencia de
na.rm = TRUEtodas estas funciones agregadas devuelvenNA.Fijando
na.rm = TRUE, estas funciones excluyen los valores deNA, lo que conduce a cálculos precisos y significativos. El tema de conocimientos Fundamentos de programación en R puede ser un buen recurso para comprender mejor el uso y la sintaxis de estas funciones.Tratamiento de valores perdidos en diferentes estructuras de datos
Veamos cómo tratar los valores perdidos en diferentes estructuras de datos. Antes de continuar, echa un vistazo a nuestro Dominio de las estructuras de datos en el lenguaje de programación R si quieres saber más sobre las estructuras de datos en R.
Vectores
En los vectores,
na.rmpuede utilizarse directamente dentro de las funciones para excluir los valores perdidos. Los ejemplos compartidos en la sección anterior son todos ejemplos dena.rmen acción sobre vectores.Marcos de datos
Para los marcos de datos,
na.rmpuede aplicarse dentro de funciones utilizadas en columnas específicas o a través de filas utilizandoapply(), como se muestra a continuación:Toma:
Xuna matriz, marco de datos o matrizMARGIN: argumento para identificar dónde aplicar la función:MARGIN=1para manipular filasMARGIN=2para manipular columnasMARGIN=c(1,2)para manipular filas y columnasFUN: indica qué función aplicar. Se pueden aplicar funciones incorporadas comomean(),median(),sum(),min(),max(), y funciones definidas por el usuario.Vamos a crear un marco de datos para que nos sirva de referencia a lo largo de este tutorial.
Listas
La función
lapply()en R se utiliza para aplicar una función especificada a cada elemento de una lista, vector o marco de datos, y devuelve una lista de la misma longitud. Esta función no requiere un parámetroMARGIN, ya que aplica automáticamente la operación a todos los elementos.Syntax:
Toma:
: La lista, vector o marco de datos de entrada.vector_with_nafun: La función que debe aplicarse a cada elemento de datos de entrada.Vamos a entender
lapply()con un ejemplo de lista. Aquí tenemos una lista de colecciones (item_1yitem_2) con elementos similares al marco de datos (dataframe_with_na). Nuestro objetivo es encontrar la media de cada colección.La función
sapply()es similar alapply()pero devuelve una matriz o array en lugar de una lista. Utilicemos la lista (list_with_na) y elsapply()para calcular la media de los valores de cada colección que contiene.Ahora, vamos a utilizar el marco de datos (
dataframe_with_na) y elsapply()para calcular la suma de los valores de cada columna.Para una comprensión más amplia de la manipulación de datos en R, es muy recomendable el curso Manipulación de Datos con dplyr. Si te sientes inseguro con la familia de funciones apply() en concreto, lee nuestro Tutorial sobre la familia apply de R.
Comparación con na.omit() y complete.cases()
na.omit(): Esta función elimina todas las filas que contienen valoresNAen un marco de datos. Vamos a entenderlo con un ejemplo:complete.cases(): Por otra parte,complete.cases()identifica las filas sin ningún valorNAy devuelve un bool correspondiente a cada fila (FALSEpara las filas conNAy viceversa). Se puede utilizar para filtrar los valores no ausentes en el marco de datos, como se muestra a continuación.Técnicas avanzadas para tratar valores perdidos
Además de
na.rm, R ofrece métodos avanzados para tratar los datos que faltan:Utilizar is.na() para identificar valores perdidos
is.na()se puede aplicar directamente sobre un vector o marco de datos para identificar los datos que faltan. Devuelve unTRUEcorrespondiente a cada valor perdido.Aplicación de métodos de imputación
La imputación sustituye los valores que faltan por valores estimados, como la media o la mediana, como se muestra a continuación:
Utilizar la función resumen()
Curiosamente, la función
summary()difiere del uso dena.rmpara tratar los valores perdidos. Por defecto,summary()excluye automáticamente los valores que faltan al calcular las estadísticas de resumen e informa posteriormente del número deNAs presentes en los datos.Vamos a ejecutar
summary()en el vectorvector_with_na:Y en el marco de datos
dataframe_with_na:El curso R Intermedio ofrece una visión en profundidad para los interesados en técnicas más avanzadas de tratamiento de datos.
Buenas prácticas para tratar los valores perdidos
Manejar eficazmente los valores perdidos implica varias buenas prácticas:
Comprueba siempre si faltan valores
Identifica y comprende el alcance de los datos que faltan antes de realizar los cálculos. El siguiente ejemplo muestra que el marco de datos tiene un total de 2 valores perdidos.
Utiliza comprobaciones condicionales
Comprueba siempre la presencia de datos omitidos y aplica en consecuencia cualquier técnica de imputación, asegurándote de que todos los casos extremos se tratan bien.
Considera el contexto
Comprende por qué faltan datos y elige un método adecuado para tratarlos -eliminación o imputación-.
Para un enfoque estructurado del análisis de datos y el tratamiento de los valores perdidos, el programa Limpieza de datos en R puede ser un gran recurso.
Conclusión
Comprender y utilizar
na.rmes clave para garantizar un análisis de datos fiable y preciso. Practica el uso dena.rmen proyectos de R y explora técnicas avanzadas para tratar los datos omitidos de forma exhaustiva.Para seguir aprendiendo, explora estos recursos adicionales: