texto separar mutate funcion filtros filtrar filas eliminar datos data columnas agrupar r dataframe dplyr tidyr

mutate - separar texto en columnas en r



R extendiendo mĂșltiples columnas con tidyr (1)

Esta pregunta ya tiene una respuesta aquí:

Tome esta variable de muestra

df <- data.frame(month=rep(1:3,2), student=rep(c("Amy", "Bob"), each=3), A=c(9, 7, 6, 8, 6, 9), B=c(6, 7, 8, 5, 6, 7))

Puedo usar spread desde tidyr para cambiar esto a formato ancho.

> df[, -4] %>% spread(student, A) month Amy Bob 1 1 9 8 2 2 7 6 3 3 6 9

Pero, ¿cómo puedo extender dos valores, por ejemplo, A y B , de modo que la salida sea algo así

month Amy.A Bob.A Amy.B Bob.B 1 1 9 8 6 5 2 2 7 6 7 6 3 3 6 9 8 7


Aquí hay una posible solución simple y muy eficiente usando data.table

library(data.table) ## v >= 1.9.6 dcast(setDT(df), month ~ student, value.var = c("A", "B")) # month Amy_A Bob_A Amy_B Bob_B # 1: 1 9 8 6 5 # 2: 2 7 6 7 6 # 3: 3 6 9 8 7

O una posible solución tidyr

df %>% gather(variable, value, -(month:student)) %>% unite(temp, student, variable) %>% spread(temp, value) # month Amy_A Amy_B Bob_A Bob_B # 1 1 9 6 8 5 # 2 2 7 7 6 6 # 3 3 6 8 9 7