Dans son expression la plus simple, la PROC TRANSPOSE transpose une table,
c'est-à-dire transforme les lignes en colonnes. La force de la PROC TRANSPOSE
est de pouvoir ne transposer qu'une partie des observations.
La PROC TRANSPOSE ne génère aucune sortie dans l'OUTPUT.
L'option out= permet de définir une table en sortie différente de la table prise en entrée.
L'option name= permet de renommer la variable _name_ dans le tableau transposé (variable qui contient le nom de la ou des variables transposées).
L'option prefix= permet de définir un préfixe pour les noms des nouvelles variables du tableau.
L'instruction VAR fournit la liste des variables qui vont être transposées. Ces variables n'existent plus dans le tableau en sortie, et leurs valeurs sont réparties dans les cases appropriées du nouveau tableau.
L'instruction BY permet de définir l'identifiant de l'individu. Chaque modalité de cet identifiant correspondra à une ligne du tableau final.
L'instruction ID permet de définir la variable dont les modalités doivent définir les nouvelles variables du tableau.
L'instruction COPY définit les variables qui sont recopiées telles quelles dans le tableau final.
Supposons que l'on dispose de la table notes suivante :
eleve | Matiere | note |
---|---|---|
tata | Math | 15 |
tata | Français | 10 |
titi | Math | 14 |
titi | Français | 18 |
toto | Math | 8 |
toto | Français | 12 |
Et que l'on souhaite obtenir la table notes2 suivante :
eleve | note_math | note_francais |
---|---|---|
tata | 15 | 10 |
titi | 14 | 18 |
toto | 8 | 12 |
Alors on écrit le programme suivant :
Ce programme fournit le résultat suivant :
eleve | _NAME_ | math | fran_ais |
---|---|---|---|
tata | note | 15 | 10 |
titi | note | 14 | 18 |
toto | note | 8 | 12 |
On obtient presque ce que l'on souhaitait.
L'instruction BY eleve permet bien d'obtenir une ligne par élève.
L'instruction ID matiere définit bien la variable à transposer.
La variable matiere n'existe plus, mais a été remplacée par autant de variables
qu'il y avait de modalités de matiere. A noter que les caractères spéciaux
(ici le ç) ne peuvent être traduits dans le nom de la nouvelle variable
(ici il a été remplacé par un _).
Enfin l'instruction VAR note définit le contenu des nouvelles cases :
dans mon tableau croisé eleve*matiere, je souhaite mettre la note qui
correspond à ce profil.
Une colonne subsidiaire est créée, qui rappelle le nom de la variable que l'on a transposé.