Bonjour,
Connaissez-vous le format put(nom variable, z Nb caractères) ? Ca ne marche pas, que faut-il modifier ? Merci...
Version imprimable
Bonjour,
Connaissez-vous le format put(nom variable, z Nb caractères) ? Ca ne marche pas, que faut-il modifier ? Merci...
Hello,
C'est quoi qui ne marche pas ?
voici un exemple d'utilisation:
Code:
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;
ne marche pas, pourtant la syntaxe y est ?Code:
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;
Fausse...Citation:
ne marche pas, pourtant la syntaxe y est ?
Essaies ceci :
Code:
1
2 new_num = put (num*1, Z4.);
:ccool: thx
peut-on savoir pourquoi il faut multiplier par *1 (je crois comprendre que c'est une multiplication) ?
la multiplication a pour but de faire comprendre a SAS qu'il faut traiter un numérique et non un caractère.
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 ?Merci.........Code:new_num = put (num*1, Z4.);
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 ?
Une autre solution :
Code:
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;
:ccool:
Pourquoi avoir du utiliser le "repeat" ?