J'ai un jeu de données qui ressemble à ça:
Code : Tout sélectionner
set.seed(123)
Wide <- as.data.frame(
cbind(1:5,
matrix(sample(1:30), ncol = 6)))
colnames(Wide) <- c("ID", paste("X", 1:3, sep = ""), paste("Z", 1:3, sep = ""))
Wide
ID X1 X2 X3 Z1 Z2 Z3
1 1 9 2 20 14 19 8
2 2 23 13 30 4 7 3
3 3 12 21 22 1 6 16
4 4 24 27 29 15 17 18
5 5 25 10 26 11 28 5
Je veux le transformer pour obtenir une ligne pour chaque combinaison X_n/Z_n.
Code : Tout sélectionner
Long1 <- reshape(Wide[, c("ID", "X1", "X2", "X3")], direction = "long",
idvar = "ID",
varying = list(2:4))
Long2 <- reshape(Wide[, c("ID", "Z1", "Z2", "Z3")], direction = "long",
idvar = "ID",
varying = list(2:4))
Long <- merge(Long1, Long2)
Long
ID time X Z
1 1 1 9 14
2 1 2 2 19
3 1 3 20 8
4 2 1 23 4
5 2 2 13 7
6 2 3 30 3
7 3 1 12 1
8 3 2 21 6
9 3 3 22 16
10 4 1 24 15
11 4 2 27 17
12 4 3 29 18
13 5 1 25 11
14 5 2 10 28
15 5 3 26 5
Sachant que j'ai pas mal de variables dans mon tableau, quelqu'un aurait-il une solution plus simple à mettre en œuvre que ce qui est écrit plus haut? Je ne vois pas comment faire avec la fonction reshape ou les fonctions décrites dans le package reshape.
Merci d'avance,
Aurélien