Hello
I have a numeric variable x with values ranging from 1, 2 to 25. If I simply use: y = PUT(x, 2.) then there will be one blank space for those x with one single digit, because the PUT function makes the length of 2 for all y.
My question is: how can I make this conversion without adding any blanks to y?
If you were outputting the data to a text file, I'd suggest using the -l modifier. However, if you simply want to remove the extra spaces in the data itself, you could always just "strip" them. e.g.,
data test;
set sashelp.class;
if _n_ lt 6 then age=_n_;
age1char=put(age,2.);
age2char=strip(put(age,2.));
x=length(age1char);
y=length(age2char);
run;
If you were outputting the data to a text file, I'd suggest using the -l modifier. However, if you simply want to remove the extra spaces in the data itself, you could always just "strip" them. e.g.,
data test;
set sashelp.class;
if _n_ lt 6 then age=_n_;
age1char=put(age,2.);
age2char=strip(put(age,2.));
x=length(age1char);
y=length(age2char);
run;
You could also use -L with the PUT function. PUT(AGE,2.-L)
DN, Totally agree! But, I think it is really just a matter of preference as there is virtually NO performance difference between the two methods (at least when tested on 1.9 million records).
It's finally time to hack! Remember to visit the SAS Hacker's Hub regularly for news and updates.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.