Publié le :
ETL CREATION_INTERNE

Transformation et Restructuration de Données avec PROC TRANSPOSE

Ce code est également disponible en : Deutsch English Español
En attente de validation
Ce script SAS© montre comment convertir une structure de données 'large' en 'longue' (ou inversement selon le point de vue) à l'aide de la procédure TRANSPOSE. Il génère d'abord des données internes, effectue une transposition avec gestion des noms de colonnes via un préfixe, puis utilise un DATA STEP pour appliquer des noms de variables métiers significatifs.
Analyse des données

Type : CREATION_INTERNE


Les données sont générées directement dans le script via l'instruction DATALINES dans le DATA Step créant la table MYSASLIB.SUBJECTS.

1 Bloc de code
DATA STEP Data
Explication :
Création d'une table d'exemple 'SUBJECTS' dans la bibliothèque 'MYSASLIB' contenant 4 colonnes caractères, alimentée par des données statiques (DATALINES).
Copié !
1DATA MYSASLIB.SUBJECTS;
2 
3INPUT SUB1 $ SUB2 $ SUB3 $ SUB4 $;
4DATALINES;
512 21 13 14
613 21 12 14
715 31 23 23
815 33 21 32
9 M F F M
10;
2 Bloc de code
PROC TRANSPOSE Data
Explication :
Transposition simple des variables SUB1 à SUB4. Les nouvelles colonnes générées prendront les noms par défaut (COL1, COL2, etc.).
Copié !
1 
2PROC TRANSPOSE
3DATA=MYSASLIB.SUBJECTS OUT=MYSASLIB.TRANSPOSED;
4VAR SUB1 SUB2 SUB3 SUB4;
5RUN;
6 
3 Bloc de code
PROC TRANSPOSE Data
Explication :
Seconde transposition des mêmes variables, mais en utilisant l'option PREFIX=INFO pour nommer les colonnes résultantes (INFO1, INFO2, etc.).
Copié !
1 
2PROC TRANSPOSE
3DATA=MYSASLIB.SUBJECTS OUT=MYSASLIB.TRANSPOSED2 PREFIX=INFO;
4VAR SUB1 SUB2 SUB3 SUB4;
5RUN;
6 
4 Bloc de code
PROC PRINT
Explication :
Affichage du résultat de la deuxième transposition pour vérification.
Copié !
1PROC PRINT DATA=MYSASLIB.TRANSPOSED2;
2RUN;
5 Bloc de code
DATA STEP Data
Explication :
Création de la table finale 'NEW_SUBJ' à partir de la table transposée. Utilisation de l'instruction RENAME pour attribuer des noms métiers aux colonnes générées automatiquement.
Copié !
1DATA MYSASLIB.NEW_SUBJ;
2SET MYSASLIB.TRANSPOSED2;
3RENAME INFO1=T1 INFO2=T2
4 INFO3=T3 INFO4=T4
5 INFO5=GENDER _NAME_=SUBJECT;
6RUN;
6 Bloc de code
PROC PRINT
Explication :
Rapport final affichant les données restructurées et renommées, agrémenté d'un titre et d'une note de bas de page.
Copié !
1PROC PRINT DATA=MYSASLIB.NEW_SUBJ;
2RUN;
3TITLE 'transpose function';
4FOOTNOTE 'result of TP';
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Informations de Copyright : (C) 2016 Elliott, Alan C. and Woodward, Wayne A.


Banner
Le Conseil de l'Expert
Expert
Michael
Responsable de l'infrastructure Viya.
« La procédure PROC TRANSPOSE est l'outil indispensable pour basculer entre des structures de données "larges" (plusieurs mesures en colonnes) et "longues" (mesures empilées), une étape souvent cruciale avant une analyse statistique ou un reporting. L'astuce pour garder le contrôle lors de cette transformation réside dans l'utilisation de l'option PREFIX=, qui permet de normaliser immédiatement les noms des colonnes générées (ex: INFO1, INFO2). Coupler cette procédure à un DATA Step final pour renommer les variables (RENAME) est une pratique d'excellence : cela permet de passer de noms techniques génériques à des noms métiers explicites (comme GENDER ou SUBJECT), rendant vos jeux de données immédiatement exploitables et auto-documentés. »