I need to produce a SAS-dataset in which the initials of the client have to be splitted by dots.
Input SAS dataset | Output SAS dataset must be like this | |||
Initials | Last_name | Initials must be | Last_name | |
K | Jansen | K. | Jansen | |
JL | de Vries | J.L. | de Vries | |
GJPG | Boersma | G.J.P.G. | Boersma |
please show sample input data and output data you want to have . Many of us will not open attachments for various issues like virus etc.
data have;
input initials :$5. last_name :$20.;
cards;
K Jansen
JL deVries
GJPG Boersma
;
run;
data want;
length initials $10;
set have (rename=(initials=_initials));
do i = 1 to length(_initials);
initials = trim(initials) !! substr(_initials,i,1) !! '.';
end;
drop i _initials;
run;
proc print data=want noobs;
run;
Note the way I presented example data in a data step for easy recreation (needs only copy/paste and run).
Also note how I took care of the increasing length of the initials variable.
The result:
last_ initials name K. Jansen J.L. deVries G.J.P.G. Boersma
PRX seems handy:
data have;
infile cards truncover ;
input var $ 100.;
newvar=prxchange('s/(\w)/$1./',-1,var);
cards;
K
Jansen
JL
de Vries
JPG
Boersma
;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.