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

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    juin 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : juin 2019
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Changer Automatiquement le nom des variables

    Bonjour,

    Dans le cadre d'un développement d'outil, j'ai rencontré un problème, à un moment je dois importer des tables Excel avec une vingtaine de variables. Le soucis est que le nom des colonnes de ces tables contiennent des espaces, des apostrophes et des accents.
    Je ne peux pas les changer manuellement car à chaque fois que l'outil sera lancé il faut que les noms soient changés. Est-ce qu'il est possible de le faire via des macros ?

    Merci d'avance !

  2. #2
    Membre éprouvé
    Inscrit en
    novembre 2009
    Messages
    525
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 525
    Points : 1 034
    Points
    1 034

    Par défaut Changer automatiquement le nom des variables

    Bonjour,

    À priori les espaces et caractères spéciaux sont remplacés par le caractère souligné lors de l'import. La solution dépend du contexte et de ce que vous voulez faire.

    • S'il n'y a pas trop de tables et pour avoir des noms de variables bien propres, il est possible renommer les variables manuellement, ce qui permet de conserver le caractère souligné (date_nais, age_inter...).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data test;
      set test;
      rename fa_on = facon;
    run;
    • Si vous souhaiter supprimer tous les caractères souligné, vous pouvez utiliser la macro qui suit mais vous aurez un faon au lieu d'une facon, de même pour les caractères accentués.

    Cette macro est une adaptation de la macro renamevar proposée dans la discussion Renommer des variables avec une macro SAS.

    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
    %macro renamevar(mvtabin,mvtabout);
      proc contents data=&mvtabin out=work.tempo noprint;
      run;
     
      data _null_;
         set work.tempo;
         call symput('mvvar'||compress(_n_),compress(name)) ;
         call symput('mvmax',compress(_n_)) ;
      run;
     
      data &mvtabout;
        set &mvtabin;
        %do i=1 %to &mvmax;        
          rename &&mvvar&i = %sysfunc(compress(&&mvvar&i,_));
        %end;
      run;
    %mend;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data test;
      input V_1 V__2 $;
      cards;
    1 A
    ;
    run;
     
    %renamevar(test,test_out);
    • Si vous avez la possibilité d'utiliser des fichiers csv plutôt que des fichiers Excel, une alternative est de corriger les fichiers csv par 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
    %let accent="ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûýýþÿ";
    %let noaccent="AAAAAAACEEEEIIIIDNOOOOOOUUUUYbsaaaaaaaceeeeiiiidnoooooouuuyyby";
     
    %macro renamevar_csv(file_in,file_out);
      data _null_;
         infile &file_in;
         file &file_out;
         input;
         if _n_=1 then _infile_=translate(_infile_,&noaccent,&accent);
         put _infile_;
      run;
    %mend;
     
    %renamevar_csv("d:/temp/test_in.csv","d:/temp/test_out.csv");
    (Voir les discussions Modifier un fichier texte avec SAS et Remplacer les caractères accentués).

    Cordialement,

  3. #3
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    janvier 2013
    Messages
    447
    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 : 447
    Points : 1 479
    Points
    1 479

    Par défaut

    Bonjour,
    Si tu veux garder le nom des variables avec les espaces et caractères spéciaux, tu peux forcer SAS à les accepter pendant la session avec l'option : OPTIONS VALIDVARNAME=ANY ; . Il faut obligatoirement activer cette option avant de faire l'importation.

    Cordialement Ward

Discussions similaires

  1. Numérotation automatique du nom des variables
    Par Gef27 dans le forum SAS Base
    Réponses: 2
    Dernier message: 27/12/2017, 16h20
  2. Changer tous les noms des variables
    Par Imfafa dans le forum SAS Base
    Réponses: 8
    Dernier message: 09/05/2011, 12h10
  3. changer nom des variables
    Par geofnich dans le forum SAS Base
    Réponses: 2
    Dernier message: 25/05/2010, 14h50
  4. changer le nom des variables dans une boucle
    Par bakaratoun dans le forum MATLAB
    Réponses: 3
    Dernier message: 05/02/2010, 13h50
  5. Changer le Nom des Variables
    Par suistrop dans le forum SAS Base
    Réponses: 2
    Dernier message: 06/11/2008, 14h16

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