Bonjour,
Je galère avec une mise en forme que je cherche à faire sous SAS.
J'ai un tableau avec 3 colonnes en entrée (acheteur, vendeur, montant), et un nombre non précisé d'acheteurs et de vendeurs différents. Je souhaite obtenir un nouveau tableau avec toujours les acheteurs en colonne (mais sans répétition) et les vendeurs en ligne (sans répétition également).
Pour être plus clair, voici un exemple de tableau en entrée et un en sortie:
En entrée:
acheteur vendeur montant Albert Grandezone 300 Albert Alarue 1000 Maurice Grandezone 25 Maurice Grosdiscount 453 Maurice Lemeilleur 810 Maurice Superprix 38 Julie Lemeilleur 505 Marie Grandezone 1024 Marie Alarue 53 Marie Superprix 848
En sortie:
acheteur Grandezone Alarue Grosdiscount Lemeilleur Superprix Albert 300 1000 Maurice 25 453 810 38 Julie 505 Marie 1024 53 848
Ma démarche, pour l'instant, a été la suivante:
1) Enlever tous les doublons de la colonne vendeur pour avoir la liste de tous les vendeurs différents:
2) Conserver uniquement cette colonne vendeur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 PROC SORT DATA = entree NODUPKEY OUT = etape1; BY lib_raison_sociale; RUN;
;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DATA etape2 (KEEP=vendeur); SET etape1; RUN
3) Mettre la liste des vendeurs en abscisse:
4) Ajouter ces colonnes vendeurs au tableau en entrée:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 PROC TRANSPOSE data = etape2 out=etape3; Id vendeur; run;
5) C'est là que je bloque. Je voudrais donc compléter les colonnes des différents vendeurs par les montants dépensés par les acheteurs, mais je ne vois pas comment faire. J'ai envisagé une macro sur ces nouvelles colonnes vendeur puisque grâce à l'étape 2 je peux en connaître le nombre. Cependant, mes colonnes ne sont pas numérotées, et je ne veux pas perdre le nom de ces vendeurs dans mon tableau de sortie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DATA etape4 (DROP= _NAME_); MERGE entree etape3; RUN;
Auriez_vous une idée pour que je puisse terminer ce traitement?
Merci à tous.
Partager