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 (January 2007, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Fri, 19 Jan 2007 15:18:25 -0500
Reply-To:     "Gerstle, John (CDC/CCID/NCHHSTP) (CTR)" <yzg9@CDC.GOV>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         "Gerstle, John (CDC/CCID/NCHHSTP) (CTR)" <yzg9@CDC.GOV>
Subject:      Re: Is there an ODS way to get 4 (proc freq) 2x2 tables on one
              page with the p-value?
Comments: To: Jake Bee <johbee@gmail.com>
Content-Type: text/plain; charset="us-ascii"

Jake,

Trace will provide the names of the ods datasets in either the log or in the output window (if requested). i.e.,:

Ods trace on; *ods trace on / listing;

Proc freq; tables all / chisq; run;

Ods trace off;

Once you have the dataset names, then you can use ods output to create SAS datasets (similar to using OUT= but you can get more information).

John Gerstle, MS Biostatistician Northrop Grumman CDC Information Technological Support Contract (CITS) NCHSTP \DHAP \HICSB \Research, Analysis, and Evaluation Section Centers for Disease Control and Prevention "Boss. We've got cats." "Meow"

"All truth passes through three stages: First, it is ridiculed; Second, it is violently opposed; Third, it is accepted as being self-evident." - Arthur Schopenhauer (1830)

_____

From: Jake Bee [mailto:johbee@gmail.com] Sent: Friday, January 19, 2007 3:13 PM To: Gerstle, John (CDC/CCID/NCHHSTP) (CTR) Cc: SAS-L@listserv.uga.edu Subject: Re: Is there an ODS way to get 4 (proc freq) 2x2 tables on one page with the p-value?

The procedure works, for creating an rtf, but with the trace I still don't see the datasets.

I could use one table per page, but the trick is to get the xp2_fish out of the chisq fisher

to place only the p-value on the page below the cross table. Does anyone have any ideas

on how to only get xp2_fish and like it the the 2x2 table?

Thanks, this first portion for the rtf is great!

Jake

On 1/19/07, Gerstle, John (CDC/CCID/NCHHSTP) (CTR) <yzg9@cdc.gov> wrote:

Jake, Yes, there are several ways to get your output out via ODS. But you may have some trial/error to get what looks the best.

The easiest way to get the freq output, using your code below is this:

Ods rtf file="c:\temp\test file.rtf" style=minimal; >>proc freq data=ae order=data; >> by cat ae; >> weight count; >> tables hadae*dose / chisq fisher norow nocol nocum nopercent >> /*out=f_2(drop=percent)*/; >> format hadae ynfmt. ae $preffmt. dose $dosefmt. cat catfmt.; >> /*output out=f_tx(keep=cat ae n xp2_fish) CHISQ FISHER;*/ >>run; Ods rtf close;

Note that I commented out you two output statements. The output of FREQ will be sent to the destination file (here the RTF file called 'test file.rtf'), as well as the listing (output window). But this is probably

not what you would like.

I would suggest first use ODS TRACE ON/OFF to find the names of the tables, then use ODS OUTPUT first to get the output sent to a pair of datasets, manipulate said datasets until you have a dataset useful enough to report out using PROC PRINT, REPORT, or TABULATE, using ODS RTF/HTML/etc. to send the final report to a happy destination.

For example (untested code) (I don't know what the Chi Square/Fisher's table might be called offhand):

Ods output crosstabfreqs=f_2 (drop=percent) Chisq = f_tx (keep=cat ae n xp2_fish); *ods trace on; >>proc freq data=ae order=data; >> by cat ae; >> weight count; >> tables hadae*dose / chisq fisher norow nocol nocum nopercent; >> format hadae ynfmt. ae $preffmt. dose $dosefmt. cat catfmt.; >>run; *ods trace off; Ods output close;

<some data steps etc here to get your two datasets together>

Ods rtf file="c:\temp\test file.rtf" style=minimal; >>proc print data=final; run; Ods rtf close;

OR

Ods rtf file="c:\temp\test file.rtf" style=minimal; >>proc print data=f_2; run; >>proc print data=f_tx; run; Ods rtf close;

John Gerstle, MS Biostatistician Northrop Grumman CDC Information Technological Support Contract (CITS) NCHSTP \DHAP \HICSB \Research, Analysis, and Evaluation Section Centers for Disease Control and Prevention

"Boss. We've got cats." "Meow"

"All truth passes through three stages: First, it is ridiculed; Second, it is violently opposed; Third, it is accepted as being self-evident." - Arthur Schopenhauer (1830)

>>-----Original Message----- >>From: owner-sas-l@listserv.uga.edu [mailto:owner-sas-l@listserv.uga.edu ] >>On Behalf Of Jake Bee >>Sent: Friday, January 19, 2007 12:49 PM >>To: sas-l >>Subject: Is there an ODS way to get 4 (proc freq) 2x2 tables on one page >>with the p-value? >> >>Example Code: >> >>For this I would like to get the tables for each AE, and the 4 treatment >>group freqs on one page >>containing the 2x2 table and the p-value. I'm not sure if this can be

>>done >>with ODS and proc freq, >>or if I have to take the freq output and pipe it through tabulate, then >>try >>to use the ODS. The trick >>will also be to the the p-value under each 2x2 table. I found SAS help >>where this can be done with >>graphs, but nothing so far for freq output; >> >>Thanks for any help, links, directory, thumbs down, etc. >> >>dm 'out' clear; >>dm 'log' clear; >> >>options byline nodate ls=132 ps=52; >> >>proc format; >> value $preffmt >> 'A'='Abdominal pain' >> 'B'='Headache' >> 'C'='Decrease appetite' >> 'D'='Nausea'; >> >> value $dosefmt >> 'P'='Placebo' >> 'B'='10mg' >> 'C'='20mg' >> 'D'='30mg' >> 'T'='Total'; >> >> value catfmt >> 1='10mg vs Placebo' >> 2='20mg vs Placebo' >> 3='30mg vs Placebo' >> 4='Active vs Placebo'; >> >> value ynfmt >> 1='Yes' >> 2='No'; >> run; >>quit; >> >>data ae; >>input ae $ hadae count dose $ cat; >>datalines; >>B 1 51 B 1 >>B 1 34 P 1 >>B 2 20 B 1 >>B 2 38 P 1 >>B 1 10 C 2 >>B 1 4 P 2 >>B 2 61 C 2 >>B 2 68 P 2 >>B 1 2 D 3 >>B 1 4 P 3 >>B 2 69 D 3 >>B 2 68 P 3 >>B 1 26 T 4 >>B 1 3 P 4 >>B 2 45 T 4 >>B 2 69 P 4 >>; >>run; >> >>proc sort data=ae; >> by cat ae hadae; >>run; >> >>proc freq data=ae order=data; >> by cat ae; >> weight count; >> tables hadae*dose / chisq fisher norow nocol nocum nopercent >> out=f_2(drop=percent); >> format hadae ynfmt. ae $preffmt. dose $dosefmt. cat catfmt.; >> output out=f_tx(keep=cat ae n xp2_fish) CHISQ FISHER; >>run;


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