- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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;
- Mark as New
- Bookmark
- Subscribe
- Mute
- RSS Feed
- Permalink
- Report Inappropriate Content
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.