BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Astounding
PROC Star

In agreement with the validity if previous posts, here is how it is usually done:

if (.Z < variable < 0) then delete;

Good luck.

Haikuo
Onyx | Level 15

Ksharp's has already provided a safe approach:

if var<0 and not missing(var)  then delete;

This will include all kinds of missing values ranging from '._' to '.Z'.

Regards,

Haikuo

kevgermany
Calcite | Level 5

Your problem is that you're mixing up numeric and character data. And SAS' automatic conversions are trying to help.

By saying it deletes when variable = '  ', this means variable is character. So comparing to 0 forces an automatic conversion to numeric. (check the warnings in the log)...

So you need to use the following delete statement

if put(variable,5.) < 0 and put(variable,5.) ne . then delete. 

SAS will still complain about invalid numeric data, but your tests will work correctly. Use an appropriate numeric format instead of the 5. if that's not appropriate.


CFC_SAS_Communities_400x225.jpg

Call for content now open!

It's your turn to help shape SAS Innovate 2027. Share your expertise and inspire the SAS community.

Submit your proposal →

What is Bayesian Analysis?

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 17 replies
  • 14040 views
  • 6 likes
  • 9 in conversation