¿Por qué obtengo el error “unused argument (na.action = NULL)” en la función aggregate?
Agrego datos que contienen NA
y, por lo tanto, incluyo na.action = NULL
como se explica aquí. Aquí está el código que funciona:
# Datos de prueba.
df <- data.frame(x= 1:10, group= rep(1:2, 5), other_var= rnorm(10))
# Agregar con fórmula.
aggregate(formula= x ~ group, data= df, na.action= NULL, FUN= function(i) sum(i))
En mi situación, no puedo proporcionar nombres de variables como fórmula porque pueden cambiar. Por lo tanto, los proporciono con un vector de cadenas en los argumentos x
y by
de la siguiente manera:
var_names <- c("x", "group")
aggregate(x= df[, var_names[1]], by= list(df[, var_names[2]]), na.action= NULL, FUN= function(i) sum(i))
Esto resulta en un error. Curiosamente, al omitir na.action= NULL
, por ejemplo, aggregate(x= df[, var_names[1]], by= list(df[, var_names[2]]), FUN= function(i) sum(i))
, no produce un error sino que devuelve el resultado esperado. ¿Cómo puedo evitar que las filas que contienen NA
desaparezcan al proporcionar los nombres de las columnas como un vector? Necesito incluir na.action= NULL
porque mis datos reales contienen NA
.
davy.ai
Para incluir
na.action = NULL
al proporcionar nombres de columna como un vector, puedes usar la funciónsubset
para eliminar filas con valoresNA
antes de realizar la agregación. Aquí tienes un ejemplo:Este código primero crea un subconjunto de
df
que incluye solo las filas con datos completos para las columnas especificadas envar_names
. Este subconjunto luego se utiliza en la funciónaggregate
conna.action = NULL
, asegurando que las filas con valoresNA
no se eliminen durante la agregación.