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

Hi,

I have a large number of columns and rows.

I want to delete a row of data if one specific variable is missing (FIRMID) which is a numerical variable

I tried the following but it didn't seem to work

data want;

     set have;

     if FIRMID = . then delete;

     run;

Any help appreciated.

1 ACCEPTED SOLUTION

Accepted Solutions
Astounding
PROC Star

While few people use them, there are special missing values that are different from the usual numeric missing value.  Technically, this would be safer:

data want;

set have;

if firmid <= .Z then delete;

run;

Notice there is a . before the Z (.Z, not just Z).

It's not likely that this is what is happening here, but it is really the only way to explain an otherwise simple program.

View solution in original post

4 REPLIES 4
Jagadishkatam
Amethyst | Level 16

ideally it should work, the code of yours is fine.

Please try

data want;

     set have;

where firmid ne . ;

run;

Thanks,

Jagadish

Thanks,
Jag
Patrick
Opal | Level 21

Your code looks fine to me. Is FIRMID character or numeric?

You could try instead:

data want;

     set have;

     if missing(FIRMID)  then delete;

     run;

Astounding
PROC Star

While few people use them, there are special missing values that are different from the usual numeric missing value.  Technically, this would be safer:

data want;

set have;

if firmid <= .Z then delete;

run;

Notice there is a . before the Z (.Z, not just Z).

It's not likely that this is what is happening here, but it is really the only way to explain an otherwise simple program.

Haikuo
Onyx | Level 15

Astounding beats me, yes, the safest way to rule missing value is to do something as suggested: missing() function:

data test;

input FIRMID;

cards;

1

2

.

._

.A

.B

.Z

;

DATA MISS1;

SET TEST;

if FIRMID = . then delete;

run;

DATA MISS2;

SET TEST;

IF MISSING(FIRMID) THEN DELETE;

RUN;

PROC PRINT DATA=MISS1;RUN;

Obs    FIRMID

  1 1

  2 2

  3 _

  4 A

  5 B

  6 Z

PROC PRINT DATA=MISS2;RUN;

Obs    FIRMID

1 1

2 2

 

Haikuo

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

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
  • 4 replies
  • 49114 views
  • 9 likes
  • 5 in conversation