blah is a character variable mostly populated with numbers in dataset fred.
if I do this ...
data fred2;
set fred;
if sum(blah) ^= .;
run;
... SAS will give me just those records which don't have just numbers in blah.
However, if I try something like this ...
proc tabulate data=fred;
where sum(blah) ^=.;
.
.
.
run;
... SAS complains with the error:
ERROR: Function SUM requires a numeric expression as argument 1.
Is there any way I can avoid that additional data step above and still filter on sum(blah) ^=. directly in the PROC?
The DATA step code is actually compiled, and not just run from a precompiled module as in PROC steps.
Therefore the SAS datastep compiler can recognize variable type inconsistencies and compile a typecast into the code. This is what causes the NOTE: messages about type conversion in the log.
This is, of course, not possible for dataset options (the where condition in the PROC is working like a dataset option) that don't have the luxury of compilation.
So you won't get around the character-to-numeric conversion, be it explicit or implicit.
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 the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.