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 :

Transposition sous SAS: col en ligne


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 27
    Points
    27
    Par défaut Transposition sous SAS
    Bonjour,

    Je demande votre aide pour une transposition, je m'explique:

    J'ai une base:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    data test;
    input Num_ctr Garantie $ Prime_GT Lib_act1$ Lib_act2$ Lib_act3$  Lib_act4$  Lib_act5$;
    cards;
    12345 RC 100 A B C D E
    12345 INC 80 A B .  .   .
    12346 RC 100 A . . . C
    12346 DR 120 A B C D .
    12346 VOL 40 A . . . E
    12346 INC 80 TRANSP
    run;
    J'aimerais transposer ma base pour avec une table qui ressemble à:

    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
    17
     
    data base2;
    input Num_ctr Garantie $ Prime_GT Lib_act$;
    cards;
    12345 RC 100 A 
    12345 RC 100 B
    12345 RC 100 C
    12345 RC 100 D
    12345 RC 100 E
     
    12345 INC 80 A 
    12345 INC 80 B
    12345 INC 80 C
    12345 INC 80 D
    12345 INC 80 E
     
    run;
    Donc pour un mm numéros de contrats transposer les activités en ligne sur autant de garantie.

    Merci encore

  2. #2
    Membre à l'essai Avatar de _AXOLOTL_
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 14
    Points
    14
    Par défaut
    &bonjour ;
    Je te propose de le faire en étape DATA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data test2 ;
        set test ;
    	do i = 1 to 5 ;
    	    if vvaluex(cat("Lib_act",i)) ne "" then do ;
                    Lib_act = vvaluex(cat("Lib_act",i)) ;
    		output ;
    	    end ;
    	end ;
    drop Lib_act1 Lib_act2 Lib_act3 Lib_act4 Lib_act5 i ;
    run ;
    Si tu dois paramétrer le 5 (car tu peux avoir x Lib_act et pas 5), il faudra passer par du macro langage.

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    Une simple solution pour trouver la matrice transposée de ta base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    data base2 ;
    set base1 ;
    do _Lib_act="A", "B", "C", "D", "E" ;
    output ;
    end ;
    drop Lib_act: ;
    run ;
    Cordialement Ward

  4. #4
    Membre à l'essai Avatar de _AXOLOTL_
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Novembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Novembre 2018
    Messages : 7
    Points : 14
    Points
    14
    Par défaut En DATA
    &bonjour ;
    Je te propose de le faire en étape DATA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data test2 ;
        set test ;
    	do i = 1 to 5 ;
    	    if vvaluex(cat("Lib_act",i)) ne "" then do ;
                    Lib_act = vvaluex(cat("Lib_act",i)) ;
    		output ;
    	    end ;
    	end ;
    drop Lib_act1 Lib_act2 Lib_act3 Lib_act4 Lib_act5 i ;
    run ;
    Si tu dois paramétrer le 5 (car tu peux avoir x Lib_act et pas 5), il faudra passer par du macro langage.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2015
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2015
    Messages : 62
    Points : 27
    Points
    27
    Par défaut
    Citation Envoyé par _AXOLOTL_ Voir le message
    &bonjour ;
    Je te propose de le faire en étape DATA.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    data test2 ;
        set test ;
    	do i = 1 to 5 ;
    	    if vvaluex(cat("Lib_act",i)) ne "" then do ;
                    Lib_act = vvaluex(cat("Lib_act",i)) ;
    		output ;
    	    end ;
    	end ;
    drop Lib_act1 Lib_act2 Lib_act3 Lib_act4 Lib_act5 i ;
    run ;
    Si tu dois paramétrer le 5 (car tu peux avoir x Lib_act et pas 5), il faudra passer par du macro langage.


    Çà marche très bien _AXOLOTL_ un grand merci

  6. #6
    Membre expérimenté
    Inscrit en
    Novembre 2009
    Messages
    703
    Détails du profil
    Informations forums :
    Inscription : Novembre 2009
    Messages : 703
    Points : 1 311
    Points
    1 311
    Par défaut Transposition
    Bonjour,

    Ou encore avec la proc transpose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    proc sort data=test;
      by Num_ctr Garantie Prime_GT;
    run;
     
    proc transpose data=test out=test_out(drop=_NAME_ rename=(COL1=Lib_act) where=(Lib_act ne ""));
      by Num_ctr Garantie Prime_GT;
      var Lib_act1-Lib_act5;
    run;
    Voir aussi cette discussion.

    Cordialement,

  7. #7
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur en SAS/ Statisticien
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2013
    Messages : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Citation Envoyé par moustache78500 Voir le message
    Bonjour,


    J'aimerais transposer ma base pour avec une table qui ressemble à:

    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
    17
     
    data base2;
    input Num_ctr Garantie $ Prime_GT Lib_act$;
    cards;
    12345 RC 100 A 
    12345 RC 100 B
    12345 RC 100 C
    12345 RC 100 D
    12345 RC 100 E
     
    12345 INC 80 A 
    12345 INC 80 B
    12345 INC 80 C
    12345 INC 80 D
    12345 INC 80 E
     
    run;
    Donc pour un mm numéros de contrats transposer les activités en ligne sur autant de garantie.

    Merci encore

Discussions similaires

  1. Transposition sous SAS
    Par moustache78500 dans le forum SAS Base
    Réponses: 9
    Dernier message: 26/05/2016, 12h35
  2. Réponses: 4
    Dernier message: 27/03/2016, 19h03
  3. Extraction de lignes sous sas
    Par sakhob dans le forum SAS Base
    Réponses: 2
    Dernier message: 10/12/2012, 17h12
  4. Réponses: 4
    Dernier message: 26/06/2012, 11h34

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