es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para incluir na.action = NULL al proporcionar nombres de columna como un vector, puedes usar la función subset para eliminar filas con valores NA antes de realizar la agregación. Aquí tienes un ejemplo:

    var_names <- c("x", "group")
    subset_df <- df[complete.cases(df[var_names]), ]
    aggregate(x= subset_df[, var_names[1]],  by= list(subset_df[, var_names[2]]), na.action= NULL, FUN= function(i) sum(i))
    

    Este código primero crea un subconjunto de df que incluye solo las filas con datos completos para las columnas especificadas en var_names. Este subconjunto luego se utiliza en la función aggregate con na.action = NULL, asegurando que las filas con valores NA no se eliminen durante la agregación.

Comments are closed.