BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Thalitacosta
Obsidian | Level 7

The code below is returning 0 for all values below 0, including missing values. How to count missing values separately?

proc sql;

create table xxx as

select *,

case when pd < 0 then 0 else

case when pd>= 1.3220535 then 1.3220535 else pd end end as pd_new*/

from tab

;

quit;

 

1 ACCEPTED SOLUTION

Accepted Solutions
ballardw
Super User

@Thalitacosta wrote:

The code below is returning 0 for all values below 0, including missing values. How to count missing values separately?

proc sql;

create table xxx as

select *,

case when pd < 0 then 0 else

case when pd>= 1.3220535 then 1.3220535 else pd end end as pd_new*/

from tab

;

quit;

 


Rule number 1: Missing is less than any value.

If you want to detect missing then use the MISSING function   when missing(pd) then ...

 

 

View solution in original post

3 REPLIES 3
ballardw
Super User

@Thalitacosta wrote:

The code below is returning 0 for all values below 0, including missing values. How to count missing values separately?

proc sql;

create table xxx as

select *,

case when pd < 0 then 0 else

case when pd>= 1.3220535 then 1.3220535 else pd end end as pd_new*/

from tab

;

quit;

 


Rule number 1: Missing is less than any value.

If you want to detect missing then use the MISSING function   when missing(pd) then ...

 

 

Tom
Super User Tom
Super User

You seem to have too many CASE keywords in your code. You only need one CASE to handle this.

 

You can use the MISSING() function to test for missing.

case when missing(pd) then . 
     when pd < 0 then 0 
     when pd>= 1.3220535 then 1.3220535 
     else pd 
end

Or use MIN() and MAX() functions.

case when not missing(pd) then max(0,min(pd,1.3220535)) else . end

 

 

Note also that the largest missing value is .Z so you could make sure the value is larger than that.

tarheel13
Rhodochrosite | Level 12

do case when .z < pd < 0 instead of just < 0

sas-innovate-2024.png

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.

 

Register now!

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 5619 views
  • 1 like
  • 4 in conversation