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

SAS Base Discussion :

Transposer les colonnes en lignes


Sujet :

SAS Base

  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut Transposer les colonnes en lignes
    Bonjour,

    Je travaille sur une table de près de 200 colonnes pour 200 lignes et pour des raisons de commodités, je souhaiterais transposer cette table de façon à avoir en ligne ces quelques colonnes.

    Je sais faire la transposition de lignes en colonnes avec la PROC TRANSPOSE, mais dans l'autre sens, je péche !!!

    Je me tourne donc vers vous...

    Par avance merci de votre aide.

    Taisherg

  2. #2
    Membre expérimenté


    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Par défaut
    Bonjour,
    Je ne vois pas trop ou est le problème : quand tu transposes tes lignes en colonne, tes colonnes sont automatiquement transposées en lignes.
    Pourrais-tu nous en dire d'avantage sur ton problème, avec un très léger extrait de ta table si possible.
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

  3. #3
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut
    Désolé pour mon manque d'explications...

    Ci dessous un exemple bref d'avant et aprés :

    Table initiale à transposer :

    ID_CLIENT PERIODE CODE_P VAR1 VAR2 VAR3
    23568 200801 35 0,236 1256 3,126
    1323568 200801 44 0,5 326 4
    523568 200810 35 1,9 159 5,68

    Table finale souhaitée :

    ID_CLIENT PERIODE CODE_P CODE_VAR NB

    23568 200801 35 VAR1 0,236
    23568 200801 35 VAR2 1256
    23568 200801 35 VAR3 3,126
    1323568 200801 44 VAR1 0,5
    1323568 200801 44 VAR2 326
    1323568 200801 44 VAR3 4
    523568 200810 32 VAR1 1,9
    523568 200810 32 VAR2 159
    523568 200810 32 VAR3 5,68

    J'espére que ce petit exemple sera plus explicite.

    Merci de votre réponse.

  4. #4
    Membre expérimenté


    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Par défaut
    Bonjour,
    Comment obtiens-tu ta variable CODE_VAR dans ta variable à transposer?
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

  5. #5
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut
    Justement, c'est le problème que j'ai !

    Je souhaiterais créer 2 nouvelles variables (à savoir CODE_VAR et NB) qui correspondent à la transposition en ligne de mes variables initialement en colonnes. Ainsi, CODE_VAR serait composé des intitulés de colonnes (VAR1, VAR2, VAR3) et NB correspondrait aux valeurs des variables en colonnes.

    Je sais pas trop si je suis tout à fait claire ???



    Merci

  6. #6
    Membre expérimenté


    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Par défaut
    Ah ok j'ai compris!
    En gros tu veux dupliquer tes lignes: ta ligne 1 de ta table initiale comporte les valeurs des 3 variables Var1, var2 et var3. Tu veux dans ta table finale avoir 3 lignes pour cet individu et deux variables (nom variable et valeurs variable)
    C'est bien ça?
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

  7. #7
    Membre expérimenté


    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Par défaut
    A l'aide de DATA tu dois pouvoir faire ça assez facilement :
    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
    DATA b1  (KEEP= ID_CLIENT PERIODE CODE_P CODE_VAR NB);
    SET base;
    code_var="var1";
    nb=var1;
    RUN;
    DATA b2  (KEEP= ID_CLIENT PERIODE CODE_P CODE_VAR NB);
    SET base;
    code_var="var2";
    nb=var2;
    RUN;
    DATA b3  (KEEP= ID_CLIENT PERIODE CODE_P CODE_VAR NB);
    SET base;
    code_var="var3";
    nb=var3;
    RUN;
    Et après tu merge tes bases par tyon ientifiant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DATA baseFin;
    MERGE b1 b2 b3;
    BY id_client;
    RUN;
    J'ai pas testé le code!
    Les balises code
    FAQ SAS
    Rubrique SAS

    Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.

  8. #8
    Invité
    Invité(e)
    Par défaut Proc transpose
    Bonjour,

    Voici le programme qui semble faire ce qu'on demande :

    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
    data A ;
      input ID_CLIENT $ PERIODE $ CODE_P $ VAR1 VAR2 VAR3 ;
      datalines ;
      23568 200801 35 0.236 1256 3.126
      1323568 200801 44 0.5 326 4
      523568 200810 35 1.9 159 5.68
      ;
    run ;
     
    proc sort data=A ;
      by ID_CLIENT PERIODE CODE_P ;
    run ;
    proc transpose data=a out=b(rename=(_NAME_=CODE_VAR COL1=NB )) ;
      by ID_CLIENT PERIODE CODE_P ;
      var VAR1-VAR3 ;
    run ;
    Bon courage
    Dernière modification par fafabzh6 ; 03/12/2008 à 12h23. Motif: Manque balise [code] [/code]

  9. #9
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut
    Merci beaucoup pour tous ces éléments, ça ressemble de très prés à ce que je voulais réussir à faire.

    Je teste le programme sur ma base et je reviens vers vous pour vous donner le résultat...

    Encore merci pour votre aide super rapide !!!



    Bonne fin de journée.

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 97
    Par défaut OH NON !!!!
    Bonsoir,

    J'ai enfin pu tester le code ci dessus sur ma table de données et malheureusement, ça ne fonctionne pas !!!

    Je pense que cela provient du fait que mes variables se nomment pas var1, var2, var3 mais nbcli, nbent, ftcp1 (entre autres)...

    Est-il nécessaire de renommer mes variables et si oui comment faire au plus vite car renommer 200 variables, c'est plutot fastidieux !!!

    Par avance merci de votre aide...

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/05/2014, 16h10
  2. [XL-2007] Macro pour transposer les colonnes en lignes
    Par boubadia dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 19/10/2011, 20h51
  3. Requête SQL : Afficher les colonnes en ligne, et vice versa
    Par paflolo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 17/03/2009, 09h16
  4. inverser les colonnes et lignes dans un etat
    Par laurence1002 dans le forum IHM
    Réponses: 7
    Dernier message: 27/11/2006, 20h52
  5. [SQL] Transposer des colonnes en lignes + LIKE et SOUNDEX
    Par Anne1969 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/11/2005, 13h44

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