BookmarkSubscribeRSS Feed
Gerrit65
Calcite | Level 5

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

4 REPLIES 4
kiranv_
Rhodochrosite | Level 12

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.

Kurt_Bremser
Super User
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

 

Gerrit65
Calcite | Level 5
Thanks Kurt!! It works excellent!!!
Haikuo
Onyx | Level 15

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
;
How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1768 views
  • 2 likes
  • 4 in conversation