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.
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.
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
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;
Consultez les FAQs et les anciens postes avant de poser vos questions. Merci
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 :
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=put(var1,3.)||put(var2,2.); 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.
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;
Pour pallier à ça, on utilise des fonctions caractères qui supprime les espaces comme trim ou cat (en SAS v9 seulement).
Steel
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;
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!
Ben oui,
Est ce que ca vient des longueurs que je met dans mes put?
Quand je test ton exemple ca fonctionne, mais aparemment vu que mes champs n'ont pas toujours la meme longueur ca lui pose souci.
merci ca marche, c'est juste que la longueur de mon champ n'etait pas assez grande, du coup il tronque le resultat
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager