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;
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
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.