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 :

Concatenation de type numérique sous sas data integration [Fait]


Sujet :

SAS Base

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 98
    Points : 56
    Points
    56
    Par défaut Concatenation de type numérique sous sas data integration
    Dsl pour la question de débutant, mais je dois concaténer 4 code numerique dans un champ, et je ne connais pas la syntaxe,
    J'ai essaye avec le & mais ca ne fonctionne pas.
    Si quelqu'un c'est comment faire, merci d'avance.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 98
    Points : 56
    Points
    56
    Par défaut
    J'ai trouvé une solution à l'aide de la faq:

    PUT(MRCBRA,$CHAR10.)!!PUT(MRCCTT,$CHAR10.)!!PUT(MRDEXC,$CHAR10.)!!PUT(MRNSIN,$CHAR10.)

    Mais il me met l'erreur suivante:

    ERROR: Character format $CHAR in PUT function requires a character argument.

    Si quelqu'un peut me dire ce que je doit modifier.Merci

  3. #3
    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
    test la syntaxe suivante
    PUT(MRCBRA,$10.)!!PUT(MRCCTT,$10.)!!PUT(MRDEXC,$10.)!!PUT(MRNSIN,$10.)


    tes numéros sont sur combiens de positions: si plus de 10 numéros SAS te mettre un exponentiel dans la cellule voir exemle

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    data t;
    input a; 
    cards;
    123456789
    123456
    ;
    run;
    data t1; set t;
    b=put(a,$8.);
    run;

  4. #4
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Bonjour,
    Pour concaténer en peut utiliser !! ou ||.
    Pour convertir du numérique en caractère on peut utiliser la fonction put suivie d'un format NUMERIQUE qui va bien.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data test;
       var1=123;
       var2=99;
       var3=put(var1,3.)||put(var2,2.);
    run;
    on peut également utiliser la conversion automatique sans put :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data test;
       var1=123;
       var2=99;
       var3=var1||var2;
    run;
    Dans ce cas, il écrit chaque valeur de la variable sur 12 positions (car le format numérique par défaut BEST12. a une longueur de 12) en alignant à droite. Ainsi on a des espaces avant.
    Pour pallier à ça, on utilise des fonctions caractères qui supprime les espaces comme trim ou cat (en SAS v9 seulement).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    data test;
       var1=123;
       var2=99;
       var3=trim(left(var1))||trim(left(var2)); /* on aligne à gauche et on supprime les espaces à droite.*/
    run;
    Steel

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 98
    Points : 56
    Points
    56
    Par défaut
    C'est justement l'expression que j'ai essaye.
    La je vient d'essayer celle ci:

    PUT(MRCBRA,10.)!!PUT(MRCCTT,10.)!!PUT(MRDEXC,10.)!!PUT(MRNSIN,10.)

    Il ne met plus d'erreur, mais il ne met plus rien dans ma colonne!

  6. #6
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Ne pas oublier le ; à la fin ;-)
    est ce que ta variable à gauche de l'égalité est bien définie en caractère ?

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 98
    Points : 56
    Points
    56
    Par défaut
    Ben oui,

    Est ce que ca vient des longueurs que je met dans mes put?

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 98
    Points : 56
    Points
    56
    Par défaut
    Quand je test ton exemple ca fonctionne, mais aparemment vu que mes champs n'ont pas toujours la meme longueur ca lui pose souci.

  9. #9
    Membre éprouvé
    Avatar de steelspirit
    Homme Profil pro
    SAS discute
    Inscrit en
    Janvier 2008
    Messages
    472
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SAS discute
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2008
    Messages : 472
    Points : 916
    Points
    916
    Par défaut
    Dans ce cas essai la conversion automatique (2ème code de mon post)

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 98
    Points : 56
    Points
    56
    Par défaut
    merci ca marche, c'est juste que la longueur de mon champ n'etait pas assez grande, du coup il tronque le resultat

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

Discussions similaires

  1. Lookup sous Pentaho Data Integration
    Par souska dans le forum kettle/PDI
    Réponses: 10
    Dernier message: 06/05/2009, 16h01
  2. importation sous SAS data integration
    Par maverik40 dans le forum Outils BI
    Réponses: 0
    Dernier message: 02/04/2009, 16h48
  3. Problème de "case" sous sas data integration
    Par feragne dans le forum SAS Base
    Réponses: 2
    Dernier message: 01/09/2008, 15h47
  4. Réponses: 0
    Dernier message: 30/07/2008, 15h45
  5. Réponses: 1
    Dernier message: 20/03/2008, 17h00

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