LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous (more recent) messageNext (less recent) messagePrevious (more recent) in topicNext (less recent) in topicPrevious (more recent) by same authorNext (less recent) by same authorPrevious page (March 1998, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Mon, 16 Mar 1998 15:52:46 -0500
Reply-To:     "Abelson, Robert" <RobertA@MOCR.OAPI.COM>
Sender:       "SAS(r) Discussion" <SAS-L@UGA.CC.UGA.EDU>
From:         "Abelson, Robert" <RobertA@MOCR.OAPI.COM>
Subject:      Re: SUGGEST
Content-Type: text/plain

Girish,

First of all, on my platform (Windows NT) I needed a sort to get it to work:

PROC SORT DATA=A; BY ID CITY STATE; RUN;

Then in your DATA _NULL_ step, you only want to put out ID and CITY if FIRST.CITY is true:

DATA _NULL_; SET A ; BY ID CITY STATE; FILE PRINT N=PS LL=LL NOTITLES LS=100; RETAIN SUMA ACTIVE 0; IF _N_ = 1 THEN PUT // @1 'ID' @9 'CITY' @20 'STATE' @30 'ACTIVE' / ; IF FIRST.CITY THEN PUT @1 ID @9 CITY @ ; PUT @20 STATE @ ; PUT @30 ACTIVE 4. @ / ; IF FIRST.CITY AND FIRST.STATE THEN DO; SUMA=0; END; SUMA+ACTIVE;; IF LAST.CITY & LAST.STATE THEN PUT @ 15 'TOTAL' @30 SUMA 4. // ; RUN;

I didn't bother with trying to get TOTAL to come out first, since it is computed last. This can be done, but will be more complicated.

Bob Abelson Otsuka America Pharmaceuticals

> -----Original Message----- > From: girish.s.patel@CCMAIL.CENSUS.GOV > [SMTP:girish.s.patel@CCMAIL.CENSUS.GOV] > Sent: Monday, March 16, 1998 3:13 PM > To: SAS-L@UGA.CC.UGA.EDU > Subject: SUGGEST > > CAN ANYBODY SUGGEST " CHANGES " IN THE FOLLOWING CODE TO GET " > DESIRED > RESULTS " ? > > data a; > Input ID $ city $ state $ active ; > Cards; > abc 1 F 4643 > abc 1 N 458 > abc 2 F 11 > abc 2 N 21 > XYZ 1 F 1431 > XYZ 1 N 458 > XYZ 2 F 31 > XYZ 2 N 41 > > Run; > > DATA _NULL_; > SET A ; > BY ID CITY STATE; > FILE PRINT N=PS LL=LL NOTITLES LS=100; > RETAIN SUMA ACTIVE 0; > IF _N_ = 1 THE PUT > // @1 'ID' @9 'CITY' @20 'STATE' @30 'ACTIVE' / ; > PUT @1 ID @ ; > PUT @9 CITY @ ; > PUT @20 STATE @ ; > PUT @30 ACTIVE 4. @ / ; > IF FIRST.CITY AND FIRST.STATE THEN DO; > SUMA=0; END; > SUMA+ACTIVE;; > IF LAST.CITY & LAST.STATE THEN > PUT @ 15 'TOTAL' @30 SUMA 4. // ; > RUN; > > <<<<<<<<<<<< output >>>>>>>>>>>> > > ID CITY STATE ACTIVE > > abc 1 F 4643 > abc 1 N 458 > TOTAL 5101 > > abc 2 F 11 > abc 2 N 21 > TOTAL 32 > > XYZ 1 F 1431 > XYZ 1 N 458 > TOTAL 1889 > > XYZ 2 F 31 > XYZ 2 N 41 > TOTAL 72 > > > <<<<<<<<< DESIRED OUTPUT >>>>>>>>>>>>> > > ID CITY STATE ACTIVE > > abc 1 TOTAL 5101 > F 4643 > N 458 > > abc 2 TOTAL 32 > F 11 > N 21 > > XYZ 1 TOTAL 1889 > F 1431 > N 458 > > XYZ 2 TOTAL 72 > F 31 > N 41


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