1. #1
    Nouveau membre du Club
    Femme Profil pro
    Data manager
    Inscrit en
    février 2012
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Data manager
    Secteur : Santé

    Informations forums :
    Inscription : février 2012
    Messages : 43
    Points : 34
    Points
    34

    Par défaut Modification champs caractères en numérique avec des formats

    Bonjour à tous,

    J'ai a ma disposition un ensemble de tables SAS où mes données sont en caractères (ex : Yes / No)
    On me demande de fournir cette même base avec des données numériques et de donner les formats associés (donc 0 et 1 et les formats Yes et No)

    Aujourd'hui avec mes connaissances en SAS,j'ai crée un catalogue de format et pour chacune de mes tables les manipulations suivantes :
    1 - Création d'une nouvelle variable où mes Yes sont égaux à 1 et mes No égaux à 0.
    2 - J'y applique mon format
    3 - Je fais une proc sql pour remettre mes variables dans le bon ordre en supprimant mes variables caractères

    J'ai une trentaine de tables avec en moyenne 20 variables a recoder.
    Je dois bien sûr (sinon ce serait trop simple) garder le nom des variables originels

    Est-ce la bonne solution ou existe - t-il un moyen plus rapide ?

    Merci d'avance de vos retours

  2. #2
    Membre confirmé
    Inscrit en
    novembre 2009
    Messages
    301
    Détails du profil
    Informations forums :
    Inscription : novembre 2009
    Messages : 301
    Points : 592
    Points
    592

    Par défaut Modification champs caractères en numérique avec des formats

    Bonjour,

    Vous n'indiquez pas de quelle façon vous créez vos nouvelles variables. Il peut être utile de créer un informat mais vous devrez toujours réorganiser l'ordre des variables. Vous pouvez aussi créer une macro :

    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
    proc format;
      invalue yesno
      "No" = 0
      "Yes" = 1;
      value yesno
      0 = "No"
      1 = "Yes";
    run;
     
    data test;
      input V1:$3. V2:$3. V3:8.;
      cards;
    Yes No 1
    Yes No 2
    No Yes 3
    ;
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    %macro recode(var,format);
      _&var = input(&var,&format);
      format _&var &format;
      drop &var;
      rename _&var=&var;
    %mend;
     
    data test;
      set test;
      %recode(V1,yesno.);
      %recode(V2,yesno.);
    run;
    Cordialement,

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/02/2014, 16h32
  2. [DATA] Remplir valeur d'une variable numérique avec des If
    Par Oreo_ dans le forum SAS Base
    Réponses: 2
    Dernier message: 17/06/2013, 13h46
  3. Tri numérique avec des caractères associés
    Par claude dans le forum Requêtes
    Réponses: 5
    Dernier message: 29/08/2012, 11h42
  4. [CR XI] Besoin d'un tri numérique avec des strings
    Par valarko dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 27/08/2009, 11h04
  5. [CR9] Mise en forme de champ avec des formats
    Par Sytchev3 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 01/03/2007, 16h35

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