IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macro Discussion :

Nouvelle mise en forme de tableau avec les variables d'une colonne en titre de colonne


Sujet :

Macro

  1. #1
    Candidat au Club
    Homme Profil pro
    Amateur de programmation
    Inscrit en
    Novembre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Amateur de programmation
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Nouvelle mise en forme de tableau avec les variables d'une colonne en titre de colonne
    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:
    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;
    2) Conserver uniquement cette colonne vendeur:
    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:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    PROC TRANSPOSE data = etape2 out=etape3;
    Id vendeur;
    run;
    4) Ajouter ces colonnes vendeurs au tableau en entrée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DATA etape4 (DROP= _NAME_);
    MERGE entree etape3;
    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.

    Auriez_vous une idée pour que je puisse terminer ce traitement?

    Merci à tous.

  2. #2
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    707
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 707
    Points : 1 320
    Points
    1 320
    Par défaut proc transpose
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    data test;
      input acheteur :$12. vendeur :$12. montant :8.;
      cards;
    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
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    proc sort data=test;
      by acheteur vendeur;
    run;
     
    proc transpose data=test out=test_out(drop=_NAME_);
      var montant;
      by acheteur;
      id vendeur;
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    acheteur    Alarue    Grandezone    Lemeilleur    Superprix    Grosdiscount
    
    Albert       1000         300             .            .              .
    Julie           .           .           505            .              .
    Marie          53        1024             .          848              .
    Maurice         .          25           810           38            453
    Cordialement,

  3. #3
    Candidat au Club
    Homme Profil pro
    Amateur de programmation
    Inscrit en
    Novembre 2020
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Amateur de programmation
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2020
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Oh merci, c'est super!
    ... super simple comme ça...
    Je faisais donc fausse route dès le début. Il faut que je retravaille cette proc !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Remplir un tableau avec les résultats d'une fonction
    Par lotfidk dans le forum Excel
    Réponses: 3
    Dernier message: 10/04/2015, 08h34
  2. Réponses: 1
    Dernier message: 08/06/2014, 08h59
  3. remplir un tableau avec les données d'une BDD
    Par info3licen dans le forum Langage
    Réponses: 5
    Dernier message: 18/12/2012, 13h10
  4. [MySQL] Ressortir un tableau avec les resultats d'une requete
    Par franco14 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 16/03/2010, 10h55
  5. [MySQL] Création d'un tableau avec les données d'une base de données
    Par opeo dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 02/04/2009, 21h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo