Date: Wed, 25 Feb 2009 15:36:23 +0000
Reply-To: John Whittington <John.W@MEDISCIENCE.CO.UK>
Sender: "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From: John Whittington <John.W@MEDISCIENCE.CO.UK>
Subject: Re: TABULATE cross-tabulation with missing data
In-Reply-To: <OFDB8908FD.217AF7AF-ON86257568.0052CBCF-86257568.00530C75@
unmc.edu>
Content-Type: text/html; charset="iso-8859-1"
<html>
At 09:07 25/02/2009 -0600, Robin R High wrote:<br>
<blockquote type=cite class=cite cite><font size=2>John,</font>
<font size=2>Outside of processing the data into a different structure, I
can't think of a way to avoid the missing column for day2 with the day1 -
day3 variables, but the following simple transformation essentially gives
the tabulation you requested:</font> </blockquote><br>
Thanks. Yes, that does do the trick. In fact, with a couple
of extra tweaks, one can get the output to looks exactly as it would have
done if TABULATE were prepared to play ball with me directly. Using
your transformed dataset jj ....<br><br>
<font face="Courier New, Courier" color="#000080"><b>proc</b></font><font face="Courier New, Courier">
</font><font face="Courier New, Courier" color="#000080"><b>format</b></font><font face="Courier New, Courier"> ;<br>
</font><font face="Courier New, Courier" color="#0000FF">value</font><font face="Courier New, Courier"> Pfmt </font><font face="Courier New, Courier" color="#008080"><b>1</b></font><font face="Courier New, Courier"> = </font><font face="Courier New, Courier" color="#800080">'Day 1'</font><font face="Courier New, Courier"> </font><font face="Courier New, Courier" color="#008080"><b>2</b></font><font face="Courier New, Courier"> = </font><font face="Courier New, Courier" color="#800080">'Day 2'</font><font face="Courier New, Courier"> </font><font face="Courier New, Courier" color="#008080"><b>3</b></font><font face="Courier New, Courier"> = </font><font face="Courier New, Courier" color="#800080">'Day 3'</font><font face="Courier New, Courier"> ;<br>
</font><font face="Courier New, Courier" color="#000080"><b>run</b></font><font face="Courier New, Courier"> ;<br><br>
</font><font face="Courier New, Courier" color="#000080"><b>proc</b></font><font face="Courier New, Courier"> </font><font face="Courier New, Courier" color="#000080"><b>tabulate</b></font><font face="Courier New, Courier"> </font><font face="Courier New, Courier" color="#0000FF">data</font><font face="Courier New, Courier"> = jj;<br>
</font><font face="Courier New, Courier" color="#0000FF">class</font><font face="Courier New, Courier"> day0 dayP Y ;<br>
</font><font face="Courier New, Courier" color="#0000FF">tables</font><font face="Courier New, Courier"> Day0=</font><font face="Courier New, Courier" color="#800080">''</font><font face="Courier New, Courier"> , dayP=</font><font face="Courier New, Courier" color="#800080">''</font><font face="Courier New, Courier">*y=</font><font face="Courier New, Courier" color="#800080">' '</font><font face="Courier New, Courier">*N*f=</font><font face="Courier New, Courier" color="#008080"><b>6.0</b></font><font face="Courier New, Courier"> / </font><font face="Courier New, Courier" color="#0000FF">box</font><font face="Courier New, Courier"> = </font><font face="Courier New, Courier" color="#800080">'Day 0'</font><font face="Courier New, Courier"> </font><font face="Courier New, Courier" color="#0000FF">misstext</font><font face="Courier New, Courier">=</font><font face="Courier New, Courier" color="#800080">'.'</font><font face="Courier New, Courier"> </font><font face="Courier New, Courier" color="#0000FF">printmiss</font><font face="Courier New, Courier"> ;<br>
</font><font face="Courier New, Courier" color="#0000FF">format</font><font face="Courier New, Courier"> dayP </font><font face="Courier New, Courier" color="#008080">Pfmt.</font><font face="Courier New, Courier"> ;<br>
</font><font face="Courier New, Courier" color="#000080"><b>run</b></font><font face="Courier New, Courier"> ;</font><font face="Arial, Helvetica" size=4>;<br><br>
</font>Maybe my memory isn't as bad as I thought, but I still do think that, in the past, I have found a way to achieve this with TABULATE without having to undertake any pre-processing or post-processing - but maybe it's just that bit ('false recall'!) of my memory that is at fault!<br><br>
Thanks again.<br><br>
Kind Regards,<br>
John<br><br>
<blockquote type=cite class=cite cite><font face="Courier New, Courier" size=2 color="#000080"><b>data</b></font><font face="Courier New, Courier" size=2> jj ; </font><font face="Courier New, Courier" size=2 color="#0000FF">drop</font><font face="Courier New, Courier" size=2> day1-day3;</font> <br>
<font face="Courier New, Courier" size=2 color="#0000FF">input</font><font face="Courier New, Courier" size=2> day0 day1 day2 day3 ;</font> <br>
<font face="Courier New, Courier" size=2>dayP = </font><font face="Courier New, Courier" size=2 color="#008080"><b>1</b></font><font face="Courier New, Courier" size=2>; Y=day1; </font><font face="Courier New, Courier" size=2 color="#0000FF">IF</font><font face="Courier New, Courier" size=2> Y > </font><font face="Courier New, Courier" size=2 color="#008080"><b>.</b></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">THEN</font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">OUTPUT</font><font face="Courier New, Courier" size=2>;</font> <br>
<font face="Courier New, Courier" size=2>dayP = </font><font face="Courier New, Courier" size=2 color="#008080"><b>2</b></font><font face="Courier New, Courier" size=2>; Y=day2; </font><font face="Courier New, Courier" size=2 color="#0000FF">IF</font><font face="Courier New, Courier" size=2> Y > </font><font face="Courier New, Courier" size=2 color="#008080"><b>.</b></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">THEN</font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">OUTPUT</font><font face="Courier New, Courier" size=2>;</font> <br>
<font face="Courier New, Courier" size=2>dayP = </font><font face="Courier New, Courier" size=2 color="#008080"><b>3</b></font><font face="Courier New, Courier" size=2>; Y=day3; </font><font face="Courier New, Courier" size=2 color="#0000FF">IF</font><font face="Courier New, Courier" size=2> y > </font><font face="Courier New, Courier" size=2 color="#008080"><b>.</b></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">THEN</font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">OUTPUT</font><font face="Courier New, Courier" size=2>;</font> <br>
<font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">cards</font><font face="Courier New, Courier" size=2> ;</font> <br>
<font face="Courier New, Courier" size=2>1 1 1 1</font> <br>
<font face="Courier New, Courier" size=2>1 1 . 1</font> <br>
<font face="Courier New, Courier" size=2>1 1 1 1</font> <br>
<font face="Courier New, Courier" size=2>1 1 . 1</font> <br>
<font face="Courier New, Courier" size=2>1 1 1 1</font> <br>
<font face="Courier New, Courier" size=2>2 2 2 2</font> <br>
<font face="Courier New, Courier" size=2>;</font> <br>
<font face="Courier New, Courier" size=2 color="#000080"><b>PROC</b></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#000080"><b>PRINT</b></font><font face="Courier New, Courier" size=2>; </font><font face="Courier New, Courier" size=2 color="#000080"><b>run</b></font><font face="Courier New, Courier" size=2> ;</font> <br><br>
<font face="Courier New, Courier" size=2 color="#000080"><b>proc</b></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#000080"><b>tabulate</b></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">data</font><font face="Courier New, Courier" size=2> = jj;</font> <br>
<font face="Courier New, Courier" size=2 color="#0000FF">class</font><font face="Courier New, Courier" size=2> day0 dayP Y ;</font> <br>
<font face="Courier New, Courier" size=2 color="#0000FF">tables</font><font face="Courier New, Courier" size=2> Day0=</font><font face="Courier New, Courier" size=2 color="#800080"><i>''</i></font><font face="Courier New, Courier" size=2> , dayP*y=</font><font face="Courier New, Courier" size=2 color="#800080"><i>' '</i></font><font face="Courier New, Courier" size=2>*N*f=</font><font face="Courier New, Courier" size=2 color="#008080"><b>6.0</b></font><font face="Courier New, Courier" size=2> / </font><font face="Courier New, Courier" size=2 color="#0000FF">box</font><font face="Courier New, Courier" size=2> = </font><font face="Courier New, Courier" size=2 color="#800080"><i>'Day 0'</i></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">misstext</font><font face="Courier New, Courier" size=2>=</font><font face="Courier New, Courier" size=2 color="#800080"><i>'.'</i></font><font face="Courier New, Courier" size=2> </font><font face="Courier New, Courier" size=2 color="#0000FF">printmiss</font><font face="Courier New, Courier" size=2> ;</font> <br>
<font face="Courier New, Courier" size=2 color="#000080"><b>run</b></font><font face="Courier New, Courier" size=2> ;</font> </blockquote><br>
<br>
<div>John</div>
<br>
<div>----------------------------------------------------------------</div>
<div>Dr John Whittington, Voice: +44 (0) 1296 730225</div>
<div>Mediscience Services Fax: +44 (0) 1296 738893</div>
<div>Twyford Manor, Twyford, E-mail: John.W@mediscience.co.uk</div>
<div>Buckingham MK18 4EL, UK </div>
----------------------------------------------------------------
</html>
|