DATA Step, Macro, Functions and more

Filtering a table using WHERE

Accepted Solution Solved
Reply
New Contributor
Posts: 3
Accepted Solution

Filtering a table using WHERE

Hi all

Here is the problematic code :

data test;

     dsid=open("Work.PB_Y1999_A1_North");

     NbDeleted=attrn(dsid,"NOBS");

     rc=where(dsid,'Problem=AreaLimits');

     DeletedAreaLimits=attrn(dsid,"NLOBSF");

     rc=close(dsid);

run;

It says :

ERROR 68-185 The function WHERE is unknown, or cannot be accessed.

Now, the file does exist, has a column called Problem (and it works when I manually filter by entering "where Problem=...." in the top left box).

I use SAS 9.1

Thanks in advance if anyone can help !


Accepted Solutions
Solution
‎05-16-2012 07:22 AM
New Contributor
Posts: 3

Re: Filtering a table using WHERE

I actually got the right code !!!! It should be :

dsid=open("Work.PB_Y1999_A1_North(where=(Problem='AreaLimits'))");

Many thanks ;-)

View solution in original post


All Replies
Super User
Posts: 10,023

Re: Filtering a table using WHERE

The function WHERE is unknown

SAS doesn't has function where() .

Super User
Super User
Posts: 7,039

Re: Filtering a table using WHERE

Specify the WHERE clause as dataset option when you open the dataset.  Also you should use NLOBS instead of NOBS to avoid counting deleted observations.

dsid=open("Work.PB_Y1999_A1_North(where=(Problem=AreaLimits)");

New Contributor
Posts: 3

Re: Filtering a table using WHERE

Thanks for your replies.

I think your code misses a bracket, but it still doesn't work :

"Argument 1 to function ATTRN at line ... column ... is invalid."

Solution
‎05-16-2012 07:22 AM
New Contributor
Posts: 3

Re: Filtering a table using WHERE

I actually got the right code !!!! It should be :

dsid=open("Work.PB_Y1999_A1_North(where=(Problem='AreaLimits'))");

Many thanks ;-)

🔒 This topic is solved and locked.

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

Discussion stats
  • 4 replies
  • 239 views
  • 3 likes
  • 3 in conversation