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.

Asigna los valores de un arreglo a un dataframe en R.

Tengo un dataframe con datos sobre los estados de los Estados Unidos.

Una de las columnas en el df es “División”, que indica la ubicación a la que pertenece cada estado (“Este Central del Norte”, “Este Central del Sur”, “Atlántico Medio”, “Montaña”, “Nueva Inglaterra”, “Pacífico”, “Atlántico del Sur”, “Oeste Central del Norte”, “Oeste Central del Sur”).

Creé un array con la esperanza de vida promedio para cada división, utilizando una columna existente llamada “Esperanza de Vida”:

avg.life.exp = tapply(df[[“Esperanza de Vida”]], df$División, mean, na.rm=TRUE)

Lo cual devuelve lo siguiente:

Este Central del Norte Este Central del Sur Atlántico Medio
70.99000 69.33750 70.63667
Montaña Nueva Inglaterra Pacífico
70.94750 71.57833 71.69400
Atlántico del Sur Oeste Central del Norte Oeste Central del Sur
69.52625 72.32143 70.43500

Ahora me gustaría agregar una nueva columna al df, con la esperanza de vida promedio de cada división. Básicamente, me gustaría hacer una unión izquierda, donde si el estado perteneciera al Este Central del Norte, devolvería 70.99000, y así sucesivamente.

Necesito hacer esto sin usar paquetes.

¡Gracias de antemano por cualquier ayuda que puedas proporcionar!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar una nueva columna al marco de datos existente con la esperanza de vida promedio de cada división, podemos usar la función “merge” en R para fusionar el marco de datos original con el arreglo “avg.life.exp” basado en la columna “Division”.

    Aquí está el código para hacer esto sin usar ningún paquete:

    “`{r}

    Fusionar el marco de datos original con el arreglo avg.life.exp

    en la columna “Division” para obtener la esperanza de vida promedio

    para cada división de cada estado

    merged_df <- merge(df, data.frame(Division = names(avg.life.exp), Avg.Life.Exp = avg.life.exp),
    by = “Division”, all.x = TRUE)

    Ver el nuevo marco de datos fusionado con la columna “Avg.Life.Exp” agregada

    head(merged_df)
    “`

    Esto agregará una nueva columna al marco de datos llamada “Avg.Life.Exp” que contiene la esperanza de vida promedio para cada división de cada estado. El argumento “all.x = TRUE” en la función “merge” garantiza que todas las filas del marco de datos original se incluyan en el marco de datos fusionado, incluso si no hay una coincidencia en el arreglo “avg.life.exp” para esa división.

Comments are closed.