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 :

Caractère numérique contenant des espaces


Sujet :

SAS Base

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 15
    Points
    15
    Par défaut Caractère numérique contenant des espaces
    Bonjour,
    j'ai un petit problème sous SAS que je n'arrive pas à résoudre
    J'ai une variable de type caractère qui contient des valeur numériques sous la forme "201 302"
    Et je voudrais les convertir en numérique.

    j'ai essayé de faire un input(var,7.) mais en vain
    j'ai donc pensé que le problème venait de l'espace, mais en faisant un compress(var), SAS ne supprime pas l'espace de la variable.

    Si quelqu'un sait d'où vient le problème..
    Merci.

  2. #2
    Membre expérimenté
    Homme Profil pro
    Développeur en SAS/ Statisticien
    Inscrit en
    Janvier 2013
    Messages
    483
    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 : 483
    Points : 1 552
    Points
    1 552
    Par défaut
    Bonjour,
    voici une solution pour la conversion :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    data essai ;
       char= "201 302"	;
       char_en_num=COMPRESS(char)*1 ;
       run ;     proc contents data=essai ;  run ;
    Ward

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Ton code transforme bien la variable char en variable numérique
    mais si je l'utilise pour les observations de ma table ça ne fonctionne pas.

    Voici mon code si ça peut aider à comprendre le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    data test;<div style="margin-left:40px">comp=COMPRESS(clientid) ;</div>/*clientid est la var character que je souhaite passer en numérique */<div style="margin-left:40px"> num=input(comp,7.);</div>run;
    mais l'espace est toujours présent dans les observations de la variable comp, et du coup les observation de num sont toutes égales à .

  4. #4
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    Bonjour,

    essaye de créér une nouvelle variable dans table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    data TaTable;
    set TaTable;
    hexTaVar=put(TaVar,$hex14.);
    run;
    et donne nous la valeur de la variable hexTaVar qui est indiqué pour ta modalité "201 302"

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2014
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 19
    Points : 15
    Points
    15
    Par défaut
    Ca me met bien les valeurs en hexadécimal,
    201 302 était juste un exemple je n'ai pas cette valeur dans ma table

    Mais pour une valeur de 299 568 ça me donne 323239A03536

  6. #6
    Membre expérimenté
    Homme Profil pro
    Attaché statisticien
    Inscrit en
    Mai 2011
    Messages
    687
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Attaché statisticien
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Mai 2011
    Messages : 687
    Points : 1 581
    Points
    1 581
    Par défaut
    ok

    tu peux faire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    data TaTable;
    Set TaTAble;
    TaVarNum=1*TRANSLATE(TaVar,"20"x,"A0"x);
    run;
    et si ça ne marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data TaTable;
    Set TaTAble;
    TaVar=TRANSLATE(TaVar,"20"x,"A0"x);
    TaVarNum=1*Tavar;
    run;
    Edit : J'ai remplacé 0A par A0

  7. #7
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    ... ou, dans le même esprit, changer légèrement ton COMPRESS pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comp=COMPRESS(clientid,"A0"x) ;
    Le problème brillamment identifié par Jérôme est que les espaces dans tes valeurs ne sont pas le caractère espace standard (code 20 en ASCII) mais un espace insécable (code A0 en ASCII) ; autant la fonction COMPRESS élimine les espaces standards, autant elle ne cherche pas, par défaut, à virer les espaces insécables.
    Une autre écriture, au cas où, car je n'ai pas testé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    comp=COMPRESS(clientid,,"KD") ;
    avec KD comme Keep Digits, et il y a bien 2 virgules consécutives cette fois dans COMPRESS.
    Bon courage.
    Olivier
    Bon courage.
    Olivier

  8. #8
    Nouveau Candidat au Club
    Femme Profil pro
    biostatisticienne
    Inscrit en
    Novembre 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : biostatisticienne

    Informations forums :
    Inscription : Novembre 2019
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    Bonjour, et merci pour votre solution. J'aimerais enlever des blancs insécables présents dans des noms de variables qui sont de type caractère, et en utilisant votre 2ème proposition (qui fonctionne), je n'ai que les noms de variables qui contiennent des caractères numériques. Dans mon cas, il me manque donc 2 groupes à mon analyse. Comment est-ce que je peux faire pour enlever ces espaces insécables quelque soit le type de nom de ma variable ?
    Merci par avance
    Yael

  9. #9
    Expert confirmé
    Avatar de olivier.decourt
    Homme Profil pro
    Formateur R/SAS/statistiques
    Inscrit en
    Avril 2008
    Messages
    2 064
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Formateur R/SAS/statistiques
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 064
    Points : 4 478
    Points
    4 478
    Par défaut
    Avec la première solution,
    Bon courage.
    Olivier

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/10/2013, 11h33
  2. Réponses: 2
    Dernier message: 07/08/2012, 16h20
  3. Recuperer une variable contenant des espaces
    Par phpaide dans le forum Langage
    Réponses: 9
    Dernier message: 30/05/2006, 16h07
  4. Paramètres contenants des espaces
    Par ujoodha dans le forum Linux
    Réponses: 1
    Dernier message: 12/05/2006, 12h29
  5. Renommer des fichiers contenant des espaces
    Par MatRem dans le forum Linux
    Réponses: 6
    Dernier message: 28/04/2006, 08h21

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