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 :

Format z : mettre des zéros devant un caractère [DATA]


Sujet :

SAS Base

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut Format z : mettre des zéros devant un caractère
    Bonjour,


    Connaissez-vous le format put(nom variable, z Nb caractères) ? Ca ne marche pas, que faut-il modifier ? Merci...

  2. #2
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Hello,
    C'est quoi qui ne marche pas ?
    voici un exemple d'utilisation:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    data exemple;
    input var;
    var1= put (var, Z4.);
    cards;
    1
    12
    123
    1234
    ;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    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
     
    data matable ;
        infile  'chemin/fichier.txt'
        delimiter='09'x
        missover dsd lrecl=17 firstobs=2 ;
        length num $ 4
               var2 $ 1
               var3 $ 8
        ;
        input
             num
             var2
             var3
        ;
     
        format num $4.;
        new_num = put (num, Z4.);
    run;
    ne marche pas, pourtant la syntaxe y est ?

  4. #4
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    ne marche pas, pourtant la syntaxe y est ?
    Fausse...


    Essaies ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    new_num = put (num*1, Z4.);
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    thx

    peut-on savoir pourquoi il faut multiplier par *1 (je crois comprendre que c'est une multiplication) ?

  6. #6
    Membre émérite

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Mars 2005
    Messages
    1 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 364
    Points : 2 329
    Points
    2 329
    Par défaut
    la multiplication a pour but de faire comprendre a SAS qu'il faut traiter un numérique et non un caractère.
    Consultez les FAQs et les anciens postes avant de poser vos questions. Merci

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    Re-bonjour,


    Une petite remarque à ajouter : j'ai des données qui ont une lettre dans le code auquel on applique le put(...)
    Résultat : message d'erreur (invalid data) + valeur manquante dans la table de sortie.

    Peut-on modifier le code ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    new_num = put (num*1, Z4.);
    Merci.........

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    indication : lorsqu'il y a une lettre, les valeurs de la variable ont 4 caractères, (et non 3 auquel on devrait rajouter un 0), donc, peut-on se servir d'un ELSE NOT ?

  9. #9
    Modérateur

    Homme Profil pro
    Consultant en Business Intelligence
    Inscrit en
    Février 2011
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en Business Intelligence
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2011
    Messages : 1 624
    Points : 3 402
    Points
    3 402
    Par défaut
    Une autre 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
     
    DATA exemple;
     
    input var $4.;
    if (length(var) < 4) then ;
    var= cats(repeat('0',(4-length(var) )) , var);
    cards;
    1
    12
    123
    1234
    a 
    ab
    abc
    ;
    run;
    N'oubliez pas de consulter les FAQ SAS et les cours et tutoriels SAS
    N'oubliez pas de mettre votre message à si la solution donnée résout votre problème

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    306
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 306
    Points : 46
    Points
    46
    Par défaut
    Pourquoi avoir du utiliser le "repeat" ?

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

Discussions similaires

  1. [AC-2013] Mettre des zéros devant un chiffre
    Par jejelogeal dans le forum Modélisation
    Réponses: 3
    Dernier message: 29/01/2015, 07h15
  2. ajouter des zéro devant un nombre décimal
    Par les4c77 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/02/2010, 17h22
  3. [plotyy] Mettre des lignes devant des barres
    Par driou dans le forum MATLAB
    Réponses: 7
    Dernier message: 06/10/2009, 14h53
  4. Réponses: 4
    Dernier message: 31/08/2009, 17h05
  5. [linux] mettre des zéros devant un nombre
    Par le mage tophinus dans le forum C
    Réponses: 15
    Dernier message: 04/10/2005, 08h26

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