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 :

Classer les variables par ordre alphabétique dans une table


Sujet :

SAS Base

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut Classer les variables par ordre alphabétique dans une table
    Bonsoir,

    A cause d'une histoire de PROC TRANSPOSE, mes variables n'arrivent pas du tout dans le bon ordre dans ma table finale (exemple VALEUR_WEEK2 / VALEUR_WEEK5 / VALEUR_WEEK1).

    Sauf que j'ai une tonne de variables.

    J'ai trouvé ça sur SAS Reference : https://thesasreference.wordpress.co...dre_affichage/

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    proc sql noprint;
      select name into : var_lst separated by ‘, ‘
         from dictionary.columns
         where upcase(libname)=‘SASHELP’ and
               upcase(memname)=‘CLASS’
         order by name;
      create table class as
         select &var_lst.
         from sashelp.class;
    quit;
    Mais je n'arrive pas à l'appliquer à ma table, à chaque fois c'est la variable "name" qui ne va pas. Je ne sais pas à quoi cela correspond ni par quoi je dois la remplacer (j'ai essayer ma variable d'identifiant mais à chaque fois j'ai : ERROR: The following columns were not found in the contributing tables: ).

    En gros j'aimerai ne pas avoir à tout classer dans ma PROC REPORT finale. Savez-vous comment "trier" les variables d'une table pour les avoir dans l'ordre alphabétique ?

    Merci beaucoup,

    alers

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Utilise un retain dans une étape data
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre éclairé
    Homme Profil pro
    responsable adjoint service stat
    Inscrit en
    Mars 2009
    Messages
    448
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : responsable adjoint service stat
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2009
    Messages : 448
    Points : 823
    Points
    823
    Par défaut
    J'ai testé sur une table fictive le code proposé, il marche très bien
    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 WORK.MA_TABLE ;
        VALEUR_WEEK2 = 2 ; 
        VALEUR_WEEK5 = 5 ;
        VALEUR_WEEK1 = 1 ;
    run ; 
     
    proc sql noprint;
      select name into : var_lst separated by ", "
         from dictionary.columns
         where upcase(libname)="WORK" and
               upcase(memname)="MA_TABLE"
         order by name;
      create table MA_TABLE_ORDONNEE as
         select &var_lst.
         from WORK.MA_TABLE;
    quit;
    proc contents data = WORK.MA_TABLE_ORDONNEE ; run ;
    --> Le code ci-dessus marche t'il sur ton poste ?

  4. #4
    Membre éclairé

    Femme Profil pro
    SAS FRANCE - Support Clients France et Europe
    Inscrit en
    Février 2010
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : SAS FRANCE - Support Clients France et Europe
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 289
    Points : 886
    Points
    886
    Par défaut
    Bonjour,
    la seule chose a modifier dans le code c'est la bibliothèque et le nom de la table. NAME est une variable de dictionary.columns qui est utilisée pour construire la macro-variable. Il ne faut pas changer ce champs.
    Cordialement,

    --
    Géraldine CADE-DESCHAMPS
    Consultante ▪ Support Clients SAS
    Tel: +33 1 60 62 12 12 ▪ support@sas.com
    www.sas.com/france
    SAS® … THE POWER TO KNOW®

  5. #5
    Membre actif
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Février 2013
    Messages : 347
    Points : 235
    Points
    235
    Par défaut
    Bonjour,

    Effectivement ça fonctionne et je ne vois pas du tout ce qui a pu mal tourner chez moi. Surement le "name" que j'ai remplacé oui...

    En revanche comment faire avec un retain ?

  6. #6
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    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
     
     
    proc sql noprint;
    select name into: var separated by  ' ' from sashelp.vcolumn 
    where upcase(libname)="WORK" and upcase(memname)="MA_TABLE"
    order by name;
    quit;
     
    data result;
    retain &var.;
    set MA_TABLE;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

Discussions similaires

  1. [AC-2007] Ordre alphabétique dans une requête qui calcule les E/S par mois
    Par Kisty10 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 07/05/2011, 18h47
  2. remplacer les espaces par des _ dans une table
    Par NeutronDance dans le forum Requêtes
    Réponses: 3
    Dernier message: 15/10/2010, 00h16
  3. Classer les procédures par ordre alphabétique
    Par ouskel'n'or dans le forum Général VBA
    Réponses: 4
    Dernier message: 27/02/2007, 21h22
  4. [MySQL] Classer des résultats par ordre alphabétique
    Par Him dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 13/07/2006, 14h59
  5. Ordre alphabétique dans une liste déroulante
    Par Z[ee]k dans le forum Access
    Réponses: 2
    Dernier message: 30/05/2006, 15h02

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