Sas Gurus,
I am trying to create this data step in proc sql with case when statement and I am getting syntax errors. Any idea how to solve this? Thanks in advance.
DATA NAMES;
INPUT full_name $20.;
if index(full_name, ' ') = 0 then do;
first_name = substr(full_name,1,8);
last_name = substr(full_name,9,9);
end;
else do;
first_name = scan(full_name,1,' ');
last_name = substr(full_name, index(full_name,' '));
end;
CARDS;
;
RUN;
You could do this:
proc sql;
create table names as
select
full_name,
case when countw(full_name) = 1 then substr(full_name,1,8) else scan(full_name,1) end as first_name,
case when countw(full_name) = 1 then substr(full_name,9,9) else scan(full_name,2) end as last_name
from have;
quit;
Thank you for the suggestion Pgstat. I do have last name that have gaps in last names and that is different when I compare both with proc compare. Is there a way to fix this?
Thanks a lot.
Give an example, please.
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.