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.

Longitud a formato ancho utilizando nombres de variables.

Tengo un amplio conjunto de datos que se ve así:

dataset <- data.frame(id = c(1, 2, 3, 4, 5),
                      basketball.time1 = c(2, 5, 4, 3, 3),
                      basketball.time2 = c(3, 4, 5, 3, 2),
                      basketball.time3 = c(1, 8, 4, 3, 1),
                      volleyball.time1 = c(2, 3, 4, 0, 1),
                      volleyball.time2 = c(3, 4, 3, 1, 3),
                      volleyball.time3 = c(1, 8, 12, 2, 3))

Lo que quiero es el conjunto de datos en formato largo, con id, tiempo, baloncesto y voleibol como variables separadas. Quiero crear la columna tiempo con tres factores (tiempo1, tiempo2 y tiempo3) usando la cadena que está separada por “.” al final de las columnas baloncesto y voleibol.

¡Muchas gracias!

EDIT: resuelto error tipográfico

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para transformar el conjunto de datos en formato largo, podemos utilizar los paquetes tidyr y dplyr en R.

    Primero, podemos utilizar la función gather() de tidyr para juntar las columnas en pares clave-valor.

    Luego, podemos utilizar la función separate() de tidyr para dividir la columna key en dos basado en el delimitador ..

    Finalmente, podemos utilizar la función spread() de tidyr para separar los valores de basketball y volleyball en columnas separadas.

    Aquí está el código:

    “`{r}
    library(tidyr)
    library(dplyr)

    dataset_long <- dataset %>%
    gather(key, value, -id) %>%
    separate(key, into = c(“sport”, “time”)) %>%
    spread(sport, value)

    “`

    Esto debería darte un conjunto de datos en formato largo, con las variables id, time, basketball y volleyball como variables separadas. La columna time tendrá tres factores (time1, time2 y time3) basados en la cadena separada por . al final de las columnas basketball y volleyball.

Comments are closed.