Date: Fri, 20 Feb 2004 15:34:09 -0500
Reply-To: diskin.dennis@KENDLE.COM
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: Dennis Diskin <diskin.dennis@KENDLE.COM>
Subject: Re: Help needed with outputting..
Content-Type: text/plain; charset="us-ascii"
Kumar,
To automate something like this you pretty much have to go to a macro. The
macro can retrieve the actual treatments into macro variable and then use
them to build a datastep. For this to work, the treatment names must be
valid as dataset names. E.g. not start with numbers or contain spaces or
other invalid characters.
A sample macro: (I don't have time to test right now)
%macro split(data=);
proc sql noprint;
select distinct trim(trtmnt) into :ds1 thru :ds999 from &data where trtmnt
ne ' ';
%let n_ds = &sqlobs;
quit;
data nulls
%do i = 1 %to &n_ds;
&&ds&i
%end;
;
set &data;
select(trtmnt);
%do i = 1 %to &n_ds;
when("&&ds&i") output &&ds&i;
%end;
otherwise output nulls;
end;
run;
%mend;
%split(data=yourdataset);
HTH,
Dennis Diskin
Nagakumar Sridhar <nsridhar@ATHEROGENICS.COM>
Sent by: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
02/20/2004 03:21 PM
Please respond to Nagakumar Sridhar
To: SAS-L@LISTSERV.UGA.EDU
cc:
Subject: Help needed with outputting..
Hi Folks:
Here's the (new!) question. I have a dataset like so:
Obs.
Analyte trtmnt visit Status
N
1453 WBC (THOUS/M) ds20mg
DAY 5 I 1
1454 WBC (THOUS/M) ds20mg
DAY 5 NC 4
1455 WBC (THOUS/M) ds320mg
DAY 5 NC 5
1456 WBC (THOUS/M) ds40mg
DAY 5 NC 6
1457 WBC (THOUS/M) ds5mg
DAY 5 NC 6
1458 WBC (THOUS/M) ds640mg
DAY 5 NC 6
1459 WBC (THOUS/M) ds80mg
DAY 5 NC 6
1460 WBC (THOUS/M) dsplacebo
DAY 5 NC 5
1461 WBC (THOUS/M) ds10mg
DAY 6 NC 5
1462 WBC (THOUS/M) ds160mg
DAY 6 NC 6
1463 WBC (THOUS/M) ds20mg
DAY 6 D 1
1464 WBC (THOUS/M) ds20mg
DAY 6 I 1
1465 WBC (THOUS/M) ds20mg
DAY 6 NC 4
1466 WBC (THOUS/M) ds320mg
DAY 6 NC 5
1467 WBC (THOUS/M) ds40mg
DAY 6 NC 6
1468 WBC (THOUS/M) ds5mg
DAY 6 NC 6
1469 WBC (THOUS/M) ds640mg
DAY 6 NC 6
1470 WBC (THOUS/M) ds80mg
DAY 6 NC 6
1471 WBC (THOUS/M) dsplacebo
DAY 6 NC 5
1472 WBC (THOUS/M) ds10mg
DAY 7 NC 5
1473 WBC (THOUS/M) ds160mg
DAY 7 NC 6
1474 WBC (THOUS/M) ds20mg
DAY 7 D 1
1475 WBC (THOUS/M) ds20mg
DAY 7 I 2
1476 WBC (THOUS/M) ds20mg
DAY 7 NC 3
1477 WBC (THOUS/M) ds320mg
DAY 7 NC 5
1478 WBC (THOUS/M) ds40mg
DAY 7 NC 6
1479 WBC (THOUS/M) ds5mg
DAY 7 NC 6
1480 WBC (THOUS/M) ds640mg
DAY 7 NC 6
1481 WBC (THOUS/M) ds80mg
DAY 7 NC 6
1482 WBC (THOUS/M) dsplacebo
DAY 7 I 1
1483 WBC (THOUS/M) dsplacebo
DAY 7 NC 4
What I want to do is to output all the ds20mg to a dataset ds20mg and
all ds40mg's to ds40mg and so on. If the treatment
Groups were defined (that is, if I knew how many treatment groups there
were or what they were called) life would be easy. But that's not the
case. The number is dynamic and so's the treatment groups.
Question is how would I be able to output the various observations to
the different datasets, given the above conditions?
Thanks and regards
Kumar