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.

¿Cómo ampliar un marco de datos utilizando solo dos de sus variables en R?

Tengo un marco de datos con 5 columnas y quiero tomar ese marco de datos largo y convertirlo en un marco de datos amplio solo con las últimas dos variables. Me gustaría mantener las primeras 3 variables en formato largo.

Quiero pasar de algo como esto:

Var1 Var2 Var3 ID1 ID2
Seven April Hunger Very 3
Seven April Tired Very 3
Seven May Hunger Moderate 3
Eight May Hunger Very 1
Eight May Hunger Hardly 1
Eight May Tired Very 2

Y convertirlo en:

Var1 Var2 Var3 Very Moderate Hardly
Seven April Hunger 3 0 0
Seven April Tired 3 0 0
Seven May Hunger 1 3 1
Eight May Tired 2 0 0

¿Cómo puedo hacer eso?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para lograr esto, podemos utilizar la función reshape() de R. Primero debemos especificar qué columnas se mantendrán en el formato largo y cuáles se utilizarán para crear el formato ancho. En nuestro caso, queremos mantener las columnas Var1, Var2 y Var3 en el formato largo y crear un formato ancho utilizando las columnas ID1 e ID2.

    Así es cómo podemos hacerlo:

    library(reshape2)
    
    # leyendo el dataframe
    df <- read.csv("nombre_archivo.csv")
    
    # utilizando melt para crear primero un formato largo
    df_largo <- melt(df, id.vars = c("Var1", "Var2", "Var3"), 
                      measure.vars = c("ID1", "ID2"))
    
    # utilizando dcast para crear un formato ancho
    df_ancho <- dcast(df_largo, Var1 + Var2 + Var3 ~ variable, value.var = "value")
    
    # imprimiendo el formato ancho resultante
    df_ancho
    

    El dataframe df_ancho resultante debería tener el formato deseado. Hemos utilizado la función melt() para convertir el formato largo y dcast() para transformarlo en un formato ancho. El parámetro id.vars especifica qué columnas deben permanecer en el formato largo y measure.vars especifica qué columnas se utilizarán para crear el formato ancho. El parámetro value.var especifica la columna donde se encuentran los valores para el formato ancho.

    Cabe destacar que esto asume que la librería reshape2 ha sido instalada y cargada en tu entorno de R.

Comments are closed.