Bonjour,
Je dispose d'une table conçue en mode 1 ligne = 1 période * 1 individu, avec des variables qui peuvent être fixes sur toutes les périodes et d'autres non. J'aimerais "transposer" cette table en mode 1 ligne = 1 individu, avec, pour les variables fixe sur toutes les périodes, une seule variable qui m'indiquerait la valeur, et pour les autres, autant de variables que de périodes, avec reprise de la dernière valeur tant qu'on n'a pas de nouvelle période.
Un exemple en espérant que ça soit plus clair :
J'ai essayé de commencer à résoudre le problème avec la proc transpose mais avant même de tenter de répliquer mes informations entre deux périodes, je n'arrive pas à résoudre un premier point :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 data entree; input id periode generation sexe $ quanti1 quanti2; cards; 1 1 1980 F 1 2 1 3 1980 F 5 3 1 7 1980 F 23 4 2 1 1982 H 12 6 2 2 1982 H 15 8 2 4 1982 H 26 11 ; run; data sortie; input id generation sexe $ quanti1_1-quanti1_7 quanti2_1-quanti2_7; cards; 1 1980 F 1 1 5 5 5 5 23 2 2 3 3 3 3 4 2 1982 H 12 15 15 26 26 26 26 6 8 8 11 11 11 11 ; run;
=> En faisant ainsi, je n'ai pas les variables quanti1 et quanti2 "en colonnes" mais sur deux lignes, ce qui fait que je n'ai pas une ligne = 1 individu
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 data entree2; set entree; periodeText = "P_"||left(periode); run; proc transpose data=entree2 out=sortietest; by ident generation sexe; var quanti1 quanti2; id periodeText; quit;
NB : je passe par l'option id dans la proc transpose pour que les données correspondent bien à la bonne période (avec une bidouille de concaténation histoire d'avoir des noms de variable texte) mais je n'ai pas le bon nombre de colonnes (7 dans mon exemple) ainsi.
Merci d'avance pour vos idées :-)
Alqua
Partager