data have;
length var1 $ 50 ;
input var1 $ ;
datalines;
pointofinterest
;
data want;
set have;
do i= 1 to length(var1);
newvar=substr(var1,i,1);
end;
run;
The output I am getting is newvar=t
I am looking to get the entire string pointofinterest output using the loop with i value being 16. Where am i wrong?
Does this do what you want?
data want;
set have;
do i= 1 to length(var1);
newvar=substr(var1,i,1);
output;
end;
run;
No, not the explicit output statement..just the same pointofinterest..I am merely testing stuff to learn..it is giving me only the last letter t leaving out "pointofinteres"
That is the correct output.
newvar is recreated every time you go through a loop iteration.
So your last call is newvar=substr(var1, length(var1), 1) which is the last character.
Did you want to add each letter in the loop i.e.
p
po
poi
poin
...
pointofinterest
?
If so, look into a concatenate function - CATT, CAT, CATX, CATS
Try
data want;
set have;
length newvar $ 50; *necessary, otherwise newvar would only have a length of 8;
do i= 1 to length(var1);
substr(newvar,i,1)=substr(var1,i,1);
end;
run;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.