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 tableau colonne en ligne


Sujet :

SAS Base

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut Transposer tableau colonne en ligne
    Bonjour à tous,

    Je requiers votre aide sur la création d'un tableau. Je vous expose mon problème.
    Je dispose du tableau suivant:

    PM_A_2011 PM_B_2012 VL_A_2011 VL_B_2012 res ID
    10 12 1 2 AG H
    10 20 1 2 AF F

    Ainsi moi j'aimerais obtenir le tableau suivant:

    PM VL Catégorie Année res ID
    10 1 A 2011 AG H
    12 2 B 2011 AG H
    10 1 A 2012 AG H
    12 2 B 2012 AG H
    10 1 A 2011 AF F
    20 2 B 2011 AF F
    10 1 A 2012 AF F
    20 2 B 2012 AF F

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    Je te propose cette solution:

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    data test;
    input PM_A_2011 PM_B_2012 VL_A_2011 VL_B_2012 res $ ID $ ;
    cards;
    10 12 1 2 AG H 
    10 20 1 2 AF F 
    ;run;
     
     
     
    data test1(keep= PM VL categorie annee res id annee);
    retain PM VL categorie annee res id annee;
    set test;
    array varr11 PM_A_2011  PM_B_2012 ;
    array varr12 VL_A_2011  VL_B_2012;
    do i=1 to dim(varr11);
    PM=varr11(i);
    VL=varr12(i);
    categorie=scan(vname(varr11(i)),2,'_');
    annee=2011;
    res=res;
    id=id;
    output;
    end;
     
    do i=1 to dim(varr12);
     
    PM=varr11(i);
    VL=varr12(i);
    categorie=scan(vname(varr12(i)),2,'_');
    annee=2012;
    res=res;
    id=id;
     
    output;
    end;
    run;
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Merci beaucoup pour votre réponse. La méthode marche bien, mais je voulais si j'ai mes années qui vont de 2011 à 2020 comment ferais je?

  4. #4
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    data test;
    input PM_A_2011 PM_B_2012 PM_C_2013 VL_A_2011 VL_B_2012 VL_C_2013  res $ ID $ ;
    cards;
    10 12 122 1 2 22 AG H 
    10 20 200 1 2 22 AF F 
    ;run;
     
     
    %macro tt(deput=, fin=);
    data test1(keep= PM VL categorie annee res id annee);
    retain PM VL categorie annee res id annee;
    set test;
    array varr11 PM_: ;
    array varr12 VL_:;
     
    %do annee=&deput. %to &fin.;
     
    do i=1 to dim(varr11);
     
    PM=varr11(i);
    VL=varr12(i);
    categorie=scan(vname(varr11(i)),2,'_');
    annee=&annee.;
    res=res;
    id=id;
    output;
     
    end;
     
     
     
    %end;
    run;
    %mend tt;
    %tt(deput=2011,fin=2013);
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Malheureusement ça marche pas. Dès que que je mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    %macro tt(deput=, fin=);
    la suite de mon code est gris.

  6. #6
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Pourrais-tu, stp, envoyer la log?
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    C'est à dire le message d'erreur?

  8. #8
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    oui
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    NOTE: Procedures may not support all options or statements for all devices. For details, see the documentation for each procedure.
    NOTE: Writing TAGSETS.SASREPORT12(EGSR) Body file: EGSR
     
    NOTE: Character values have been converted to numeric values at the places given by: (Line):(Column).
          54:150   54:150   54:150   54:150   54:150   54:150   
    NOTE: Invalid numeric data, 'euro' , at line 54 column 150.
    NOTE: Invalid numeric data, 'uc' , at line 54 column 150.
    Les 2 dernières lignes sont répétées plusieurs fois.

  10. #10
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Il ya un problème au niveau format de données.

    Est ce que toutes ces colonnes:

    PM_A_2011 PM_B_2012 PM_C_2013 VL_A_2011 VL_B_2012 VL_C_2013

    sont du même format?
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  11. #11
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Oui ils sont tous numériques. Je tiens à préciser que j'ai d'autres variables dans ma base que je n'ai pas préciser dans mon exemple d'introduction. Ces variables je les rajoute tout comme je rajoute les variables res et ID.

  12. #12
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    La colonne qui contiennent 'euro' et 'uc'

    NOTE: Invalid numeric data, 'euro' , at line 54 column 150.
    NOTE: Invalid numeric data, 'uc' , at line 54 column 150.

    Est ce qu'elle fait partie de l'un des ces vecteurs :
    array varr11 PM_: ;
    array varr12 VL_:;
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  13. #13
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    array varr11 PM_: ;
    array varr12 VL_:;
    Faut-il changer PM_ et VL_ par les variables dont on a besoin? Ou bien plutôt les laisser telle quelle? Car moi je n'ai pas changé cette partie.

  14. #14
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Ce veteur array varr11 PM_: regroupe toutes les colonnes qui commencent par PM_


    Ce vecteur array varr12 VL_:; regroupe toutes les colonnes qui commencent par VL_

    Le fait de mélanger les colonnes numeriques et les colonnes caractères pose un problème
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  15. #15
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Ah d'accord je vais du coup scindé les variables numériques et qualitatives et voir ce que ça donne.

  16. #16
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Malheureusement j'ai toujours la même erreur.

  17. #17
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Pourais tu, stp, envoyer la requete que tu utilises ainsi la liste de toutes variables?
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  18. #18
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Voici ma requête:
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    %macro tt(deput=, fin=); 
    data YEARLING_t(keep= PM VL nb_vrst Age Age_terme Age_sortie EFFET cd_postal CD_PER annee res support famille gestion_t type_support produit sit_fam sexe typ_per LIB_CSP Fourgous annee);
    retain PM VL Age nb_vrst Age_terme Age_sortie EFFET cd_postal CD_PER annee res support famille gestion_t type_support produit sit_fam sexe typ_per LIB_CSP Fourgous annee;
    set YEARLING1;
    array varr11 PM_euro_2012 PM_uc_2012 PM_euro_2013 PM_uc_2013 PM_euro_2014 PM_uc_2014 PM_euro_2015 PM_uc_2015 PM_euro_2016 PM_uc_2016 PM_euro_2017 PM_uc_2017;
    array varr12 VL_euro_2011 VL_uc_2011 VL_euro_2012 VL_uc_2012 VL_euro_2013 VL_uc_2013 VL_euro_2014 VL_uc_2014 VL_euro_2015 VL_uc_2015 VL_euro_2016 VL_uc_2016;
    /*array varr11 PM_: ; 
    array varr12 VL_: ; */
     
    %do annee=&deput. %to &fin.;
     
    do i=1 to dim(varr11);
     
    PM=varr11(i);
    VL=varr12(i);
    nb_vrst = nb_vrst;
    Age=Age;
    Age_terme = Age_terme;
    Age_sortie = Age_sortie;
    EFFET = EFFET;
    cd_postal = cd_postal;
    CD_PER = CD_PER;
    annee=&annee.;
    res = res;
    support = support;
    famille = famille;
    gestion_t = gestion_t;
    type_support = type_support;
    produit = produit;
    sit_fam = sit_fam;
    sexe = sexe;
    typ_per = typ_per;
    LIB_CSP = LIB_CSP;
    Fourgous = Fourgous;
    support=scan(vname(varr11(i)),2,'_');
    output;
    end;
     
    %end;
    run;
    %mend tt;
    %tt(deput=2011,fin=2016);

  19. #19
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Août 2017
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2017
    Messages : 48
    Points : 31
    Points
    31
    Par défaut
    Au fait je viens de voir mon erreur j'ai répété 2 fois une variable appelé support dans la boucle do.

  20. #20
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Tu peux envoyer un échantillon de données (PAS LES REELLES mais même format)
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [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
  2. [XL-2007] Comment transposer des colonnes en lignes en VBA?
    Par franckimmo dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 12/08/2009, 15h03
  3. Transposer une colonne en ligne
    Par mouncefdi dans le forum Macros et VBA Excel
    Réponses: 18
    Dernier message: 13/03/2009, 12h03
  4. Transposer les colonnes en lignes
    Par taisherg dans le forum SAS Base
    Réponses: 9
    Dernier message: 03/12/2008, 16h51
  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