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

Débutez Discussion :

Conversion de variable numérique et variable caractere


Sujet :

Débutez

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Conversion de variable numérique et variable caractere
    Bonjour à tous,
    Voila,je souhaiterais convertir une variable numérique en variable caractère en utilisant la fonction put (var,$3.) pour pouvoir extraire avec le fonction substr le premier caractère
    mais la conversion ne fonctionne pas!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    case 
    when substr(put(t1.Id_Offre,$3.),1,1)="2" then "PREPAID"
    when substr(put(t1.Id_Offre,$3.),1,1)="5" then  "POSTPAID"
    else "Inconnu"
    end as Type_Offre
    la log me renvoie cette erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ERROR: Character format $ in PUT function requires a character argument

  2. #2
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    En inspérant de cette discussion http://www.developpez.net/forums/d66...sql-numerique/ et également de cet article http://www.sys-seminar.com/EE/Files/...ter%20Data.pdf voici la solution.

    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
     
    data table1;
    input Id_Offre ;
    cards;
    211
    523
    452
    555
    882
    222
    ;
    run;
     
    proc sql;
    create table table2 as select 
    case 
    when substr(LEFT(put(id_offre, 3.)), 1, 1)="2" then "PREPAID"
    when substr(LEFT(put(id_offre, 3.)), 1, 1)="5" then "POSTPAID"
    else "Inconnu"
    end as Type_Offre 
    from table1 as t1
    ;
    quit;
    Le put requiet un format numérique.

    J'avoue que j'ai pas vraiment compris pourquoi on mets un format numérique pour le put


    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

  3. #3
    Membre éprouvé
    Avatar de Haache
    Homme Profil pro
    Doctorant & Ingénieur Statiaticien Economiste
    Inscrit en
    Mars 2014
    Messages
    349
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Canada

    Informations professionnelles :
    Activité : Doctorant & Ingénieur Statiaticien Economiste

    Informations forums :
    Inscription : Mars 2014
    Messages : 349
    Points : 1 009
    Points
    1 009
    Billets dans le blog
    8
    Par défaut
    Essais avec la requête if
    Supposons que j'ai la table exo dans laquelle j'ai une variable V numérique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    data exp;
    input V;
    Cards;
    1
    4
    7
    8
    9
    10
    11
    0
    ;
    run;
    Je souhaite convertir la variable V en caractère

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    data exp;
    set exp;
    rename V=V_;
     
    data exp;
    set exp ;
    if substr(put(V_,$2.),1,1)="2" then V="PREPAID";
    else if substr(put(V_,$2.),1,1)="5" then V="POSTPAID";
    else V="Inconnu";
    drop V_;
    run;
    Merci de me confirmer que ça marche!!
    • Faites un tour sur mon siteweb professionnel www.aristideelysee.16mb.com Des codes dans la section "media et code" pouvant vous aider que vous pouvez aussi partager sur les réseaux sociaux.
    • Visiter mon blog en cliquant ici! Des techniques, astuces et macros pour l'analyse quantitative.

  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 Conversion de variable numérique en variable caractère
    Bonjour,

    Citation Envoyé par m.brahim Voir le message
    J'avoue que j'ai pas vraiment compris pourquoi on mets un format numérique pour le put.
    Ce message est un peu ancien mais voici une explication :

    La fonction put applique un format à une variable et convertit le résultat au format texte. Il faut donc que format soit compatible avec la variable d'origine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    proc format;
      value ouinon
        0 = "Non"
        1 = "Oui";
     
      value $rvb
        "R" = "Rouge"
        "V" = "Vert"
        "B" = "Bleu";
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    data test;
      V1=0;
      V2=strip(put(V1,8.));
      V3=put(V1,ddmmyy10.);
      V4=put(V1,ouinon.);
      V5="B";
      V6=put(V5,$rvb.);
    run;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    V1    V2        V3        V4     V5     V6
     0    0     01/01/1960    Non    B     Bleu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
           Procédure CONTENTS
     
    Variables par ordre de création
     
    #    Variable    Type     Long.
     
    1    V1          Num.         8
    2    V2          Texte        8
    3    V3          Texte       10
    4    V4          Texte        3
    5    V5          Texte        1
    6    V6          Texte        5
    Cordialement,

  5. #5
    Membre éprouvé
    Avatar de m.brahim
    Homme Profil pro
    SAS / BIG DATA
    Inscrit en
    Juillet 2011
    Messages
    461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : SAS / BIG DATA
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2011
    Messages : 461
    Points : 1 119
    Points
    1 119
    Billets dans le blog
    14
    Par défaut
    Bonjour mgdondon,
    Merci pour l'explication.
    Cordialement
    Certification des Talents de la programmation In Memory Statistics sur HADOOP:
    http://talents-imstat.groupe-avisia....avance?uid=162

Discussions similaires

  1. Réponses: 1
    Dernier message: 03/03/2014, 12h12
  2. Réponses: 3
    Dernier message: 07/02/2013, 14h39
  3. [Vxi3] Transformer variable Alpha en variable Numérique
    Par belema56 dans le forum Designer
    Réponses: 6
    Dernier message: 16/12/2010, 10h03
  4. Réponses: 6
    Dernier message: 23/09/2009, 14h47
  5. Réponses: 3
    Dernier message: 10/10/2008, 15h04

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