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
davy.ai
Para transformar el conjunto de datos en formato largo, podemos utilizar los paquetes
tidyr
ydplyr
en R.Primero, podemos utilizar la función
gather()
detidyr
para juntar las columnas en pares clave-valor.Luego, podemos utilizar la función
separate()
detidyr
para dividir la columnakey
en dos basado en el delimitador.
.Finalmente, podemos utilizar la función
spread()
detidyr
para separar los valores debasketball
yvolleyball
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
yvolleyball
como variables separadas. La columnatime
tendrá tres factores (time1
,time2
ytime3
) basados en la cadena separada por.
al final de las columnasbasketball
yvolleyball
.