Programming the statistical procedures from SAS

Proc freq with where statement?

Accepted Solution Solved
Reply
Contributor
Posts: 71
Accepted Solution

Proc freq with where statement?

[ Edited ]

Hi,

I am trying to run proc freq on a charachter variable with multiple where statement eg.plus additional criteria,

 

where var = "1" or var = "2" or var="3",

where var2 = 1;

 

its not working? does not give errors but just a

NOTE: WHERE clause has been replaced.

any suggestions as to why this is not working?

 


Accepted Solutions
Solution
‎05-02-2016 04:46 PM
Super User
Posts: 10,880

Re: Proc freq with where statement?

Additionally there are bits that can make your clauses shorter and perhaps easer to understand.

One is use of the IN operator to check for a list of conditions on a single variable:

 

Where Var in ('1' '2' '3') ;

if the values are numeric you can use a range of values:

 

Where Var2 in (1 3 15:27); matches 1, 3 and everything from 15 to 27 inclusive.

View solution in original post


All Replies
SAS Super FREQ
Posts: 3,556

Re: Proc freq with where statement?

The second WHERE statement is replacing the first. Instead of using two WHERE clauses, use a single statement.  I'm not sure if you want AND or OR, but try like:

 

where (var = "1" or var = "2" or var="3") AND

           var2 = 1;

 

Trusted Advisor
Posts: 1,115

Re: Proc freq with where statement?

[ Edited ]

Hi @AZIQ1,

 

Maybe you were thinking of the "NOTE: WHERE clause has been augmented."? This (comparably harmless) note occurs if a WHERE statement and a WHERE= dataset option are used in conjunction. Example:

 

proc freq data=sashelp.class(where=(age>14));
where weight>100;
tables age;
run;

 

Solution
‎05-02-2016 04:46 PM
Super User
Posts: 10,880

Re: Proc freq with where statement?

Additionally there are bits that can make your clauses shorter and perhaps easer to understand.

One is use of the IN operator to check for a list of conditions on a single variable:

 

Where Var in ('1' '2' '3') ;

if the values are numeric you can use a range of values:

 

Where Var2 in (1 3 15:27); matches 1, 3 and everything from 15 to 27 inclusive.

☑ This topic is solved.

Need further help from the community? Please ask a new question.

Discussion stats
  • 3 replies
  • 1688 views
  • 2 likes
  • 4 in conversation