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 :

Renommer toutes les variables de la table plus additionner


Sujet :

SAS Base

  1. #1
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Renommer toutes les variables de la table plus additionner
    Bonjour,
    J'ai une base de données où 12 000 variables sont nommées "A0122_40", "A0122_45", "A0122_50" ect...
    Je souhaiterais les renommer en conservant dans le nom initial les chiffres de 2 à 5. Je voudrais ensuite créer des variables additionnant toutes les colonnes ayant le même nom.
    Merci de votre aide!!

  2. #2
    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 Regrouper des variables sur une partie du nom
    Bonjour,


    Citation Envoyé par annabic Voir le message
    J'ai une base de données où 12 000 variables sont nommées "A0122_40", "A0122_45", "A0122_50" etc.
    Je souhaiterais les renommer en conservant dans le nom initial les chiffres de 2 à 5. Je voudrais ensuite créer des variables additionnant toutes les colonnes ayant le même nom.
    • Quelques remarques préliminaires :

    • Un nom de variable ne peut pas commencer par un chiffre. Il n'est donc pas possible de conserver uniquement les chiffres de 2 à 5.
    • Il n'est pas possible non plus d'avoir deux variables qui portent le même nom.


    • Je comprends dans votre formulation que vous voulez additionner les variables A0122_40 et A0122_45. Est-ce bien cela ?

    • Une proposition avec la proc sql (voir ce message) :

    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
    data test;
      input id :$6. A0122_40 A0122_45 A0122_50;
      cards;
    ID0001 1 4 10
    ID0002 2 8 20
    ;
    run;
     
    %macro sum_A0(name=);
      %let A0 = %sysfunc(substr(&name.,1,7));
      &A0. = sum(&A0., &name.);
    %mend sum_A0;
     
    proc sql noprint;
      select cats('%sum_A0(name=',name,')') into :sumlist separated by ' '
        from dictionary.columns
        where libname='WORK' and memname='TEST'
              and name like 'A0%';
    quit;
     
    data test_out;
       set test;
       &sumlist;
    run;
    • Une proposition avec la proc transpose (voir ce message).

    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
    data table1;
      input id :$6. A0122_40 A0122_45 A0122_50;
      cards;
    ID0001 1 4 10
    ID0002 2 8 20
    ;
    run;
     
    proc transpose data=table1 out=table2;
      by id;
    run;
     
    data table2;
      set table2;
      by id;
      classe = substr(_name_,1,7);
    run;
     
    proc sort data=table2;
      by id classe;
    run;
     
    proc univariate data=table2 noprint;
      var col1;
      by id classe;
      output out=table3 sum=col1;
    run;
     
    proc transpose data=table3 out=table4(drop=_NAME_ _LABEL_);
      var col1;
      by id;
      id classe;
    run;
    • Pouvez-vous indiquer les temps d'exécution des deux programmes sur votre base de donnée ? Voici deux petites macros à exécuter en début et fin de programme :

    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
    %macro initchrono;
      data temps;
        ddeb=datetime();
        hdeb=time();
        format hdeb time.;
      run;
    %mend;
     
    %macro stopchrono;
      data temps;
        set temps;
        dfin=datetime();
        hfin=time();
        temps=dfin-ddeb;
        format hfin time. temps time.;
      run;
     
      proc print noobs;
        var hdeb hfin temps;
      run;
    %mend;
    Cordialement,

  3. #3
    Candidat au Club
    Femme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juillet 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2019
    Messages : 2
    Points : 3
    Points
    3
    Par défaut MErci
    LA dernière est fonctionnelle.
    Merci beaucoup

  4. #4
    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 Regrouper des variables sur une partie du nom
    Bonjour,

    Avez-vous essayé la proposition avec la proc sql ? Je suppose qu'elle est plus rapide. Qu'est-ce qui ne fonctionne pas ?

    Cordialement,

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

Discussions similaires

  1. Renommer toutes les variables d'une table
    Par Cannaould dans le forum Débutez
    Réponses: 3
    Dernier message: 27/01/2012, 12h27
  2. renommer toutes les colonnes d'une table
    Par shrd92 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 11/02/2011, 09h37
  3. Réponses: 4
    Dernier message: 04/10/2010, 19h01
  4. Renommer toutes les variables
    Par stefsas dans le forum Macro
    Réponses: 1
    Dernier message: 02/07/2008, 14h38
  5. Renommer toutes les variables du projet
    Par herji dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 01/10/2007, 12h07

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