R: remodelación de ancho a largo [duplicado]
Esta pregunta ya tiene una respuesta aquí:
Reformar múltiples conjuntos de columnas de medición (formato ancho) en columnas individuales (formato largo) 6 respuestasTengo un marco de datos amplio que se parece a esto:
ID Time Amount CabMean CabNum PartMean PartNum DinnMean DinNum Ex
1 1 1 27 0.654621546 8 NA 7 0.316791872 6 0
2 1 2 82 0.667461321 3 0.327594876 4 0.346798127 2 1
3 1 3 52 0.313976132 1 NA 6 0.197837257 7 0
4 1 4 99 0.798328712 9 0.913751678 4 0.191679538 9 1
Me gustaría volver a darle forma (usando el paquete reshape2) a un formato largo que tome esta forma (solo inventando estos números):
ID Time Amount Ex Type Mean Num
1 1 2 50 0 Cab 0.65654321 7
2 1 2 50 0 Part 0.65654321 1
3 1 2 50 0 Dinn 0.65654321 4
He intentado algo como esto:
reshaped <- melt(data, id.vars = c("ID", "Time", "Amount", "Ex"))
Lo que me da algo como esto:
ID Time Amount Ex variable value
1 1 1 10 0 CabMean 0.6565432
2 1 2 12 0 CabMean 0.6565432
Así que estoy a mitad de camino y no puedo entender el resto. ¿Cómo (desde el código que estoy usando actualmente o desde un código completamente nuevo) extraigo el tipo (Cab, Part, Dinn) como una columna separada y creo 2 columnas adicionales que contienen valores de Media y Num?