Hi, I'm using a case else statement to try to create a new variable (source_flag) to fill in for blank for the first_source variable, however it is not populating the new variable definition of 'unknown' when it runs. Any help would be greately appreciated.
proc sql;
create table d02_buyer_source_recency as
select DISTINCT email_id,
/* first source */
first_source,
first_available_source,
CASE when (first_source = ' ' OR first_source = '.') then 'UNKNOWN'
ELSE first_source END as Source_Flag
from oralib.sum_email_list_vw ;
quit;
It's not fully clear without seeing your data, but you could try:
CASE first_source WHEN '' THEN 'UNKNOWN'
WHEN '.' THEN 'UNKNOWN'
ELSE first_source
END AS Source_Flag
Hi, thank you for your recommendation, however when I ran the adjustment still gettting 'blank' variable instead of 'unknown' in the source_flag fields.
I assume first_source is character. Are there embedded blanks? Maybe put strip(first_source) for the CASE statement?
Make sure your character variable is really empty. It might just look empty, but really include non-printing characters like tabs, line feeds, carriage returns, form feeds, non-breaking spaces, nulls.
Also it might look like it has just a period in it, but it really has a period that follows one or move spaces.
CASE when compress(first_source) in (' ','.') then 'UNKNOWN'
ELSE first_source
END as Source_Flag
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.