LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (December 2002, week 2)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Fri, 13 Dec 2002 20:24:12 -0500
Reply-To:     "Droogendyk, Harry" <Harry.Droogendyk@CIBC.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "Droogendyk, Harry" <Harry.Droogendyk@CIBC.COM>
Subject:      Re: how do I delte the second record which is duplicate of the fi
              rst record?
Content-Type: text/plain; charset="iso-8859-1"

Ya Huang pointed out the solution I posted resulted in two legitimate records being lost, apologies.

Note the change to the IF statement, no need to check first.stateid:

data new ( drop = _: ); set a; by stateid locid;

_flg1 = lag(flg1); _flg2 = lag(flg2);

if not(first.locid) and not(missing(_flg1) + missing(_flg2)) then delete; run;

The SAS System 09:53 Friday, December 13, 2002 11

Obs stateid locid flg1 flg2

1 13748 00009 87 * 2 13748 00010 3 22054 00000 4 22054 00001 86 * 5 22054 00022 6 22054 00023 7 22054 00024 8 22054 00025 9 22054 00026 10 29334 00200 87 * 11 29334 00205 12 33740 00001 13 33740 00002 87 * 14 33740 00003 15 33740 00004 16 33740 00005 87 * 17 33740 00006 18 33740 00008 19 33740 00008

-----Original Message----- From: Droogendyk, Harry Sent: December 13, 2002 6:25 PM To: 'SAS-L' Subject: RE: how do I delte the second record which is duplicate of the first record?

Assuming the second observation of stateID / locID should stick around if EITHER of flg1 -OR- flg2 are populated. If it should be if BOTH flg1 -AND- flg2 are populated change the "+" sign to "*" in the IF statement.

Note that the lag statements MUST be executed for each data step iteration.

proc sort data = a; by stateid locid descending flg1 descending flg2; run;

data new ( drop = _: ); set a; by stateid locid;

_flg1 = lag(flg1); _flg2 = lag(flg2);

if not(first.stateid and first.locid) and not(missing(_flg1) + missing(_flg2)) then delete; run;

proc print;run;

The SAS System 09:53 Friday, December 13, 2002 9

Obs stateid locid flg1 flg2

1 13748 00009 87 * 2 13748 00010 3 22054 00000 4 22054 00001 86 * 5 22054 00023 6 22054 00024 7 22054 00025 8 22054 00026 9 29334 00200 87 * 10 29334 00205 11 33740 00001 12 33740 00002 87 * 13 33740 00004 14 33740 00005 87 * 15 33740 00006 16 33740 00008 17 33740 00008

-----Original Message----- From: Action Man [mailto:wollo_desse@HOTMAIL.COM] Sent: December 13, 2002 6:00 PM To: SAS-L@LISTSERV.UGA.EDU Subject: how do I delte the second record which is duplicate of the first record?

Hi SASLres;

I have the following problem:

when two records with the same stateID and LocID but the first record has values for FLG1 and FLG2.

I need to be able to remove or delte the second record that was duplecate of the first record.

How do I do that?

StateID LocID flg1 flg2

13748 00009 87 * 13748 00009 Remove this record 13748 00010 22054 00000 22054 00001 86 * 22054 00022 22054 00023 22054 00024 22054 00025 22054 00026 29334 00200 87 * 29334 00200 Remove this record 29334 00205 33740 00001 33740 00002 87 * 33740 00003 33740 00004 33740 00005 87 * 33740 00005 Remove this record 33740 00006 33740 00008 33740 00008 do not delete this.

Thank you in advance. Wollo

_________________________________________________________________ Add photos to your e-mail with MSN 8. Get 2 months FREE*.

http://join.msn.com/?page=features/featuredemail


Back to: Top of message | Previous page | Main SAS-L page