DATA Step, Macro, Functions and more

How do I split initials by dots

Reply
New Contributor
Posts: 2

How do I split initials by dots

[ Edited ]

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

PROC Star
Posts: 253

Re: How do I split initials by dots

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.

Super User
Posts: 6,940

Re: How do I split initials by dots

[ Edited ]
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

 

---------------------------------------------------------------------------------------------
Maxims of Maximally Efficient SAS Programmers
New Contributor
Posts: 2

Re: How do I split initials by dots

Thanks Kurt!! It works excellent!!!
Respected Advisor
Posts: 3,124

Re: How do I split initials by dots

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
;
Ask a Question
Discussion stats
  • 4 replies
  • 139 views
  • 2 likes
  • 4 in conversation