<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: code more efficient in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87157#M24895</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Astounding,&lt;/P&gt;&lt;P&gt;Ou. I understand what you mean. That is a good idea.&lt;/P&gt;&lt;P&gt;About the advantage of SQL and DataStep, it is hard to say. At some time, SQL is better ,whereas at some another time DataStep is better.&lt;/P&gt;&lt;P&gt;I recommend to master these two skill all, then you will find the world is so simple.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I heard it from somewhere that CLASSIC sas programmer is very arrogant and selfish.&lt;/P&gt;&lt;P&gt;But I don't think so , at least NOT for me. I LOVE SQL too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 19 Apr 2012 09:05:06 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2012-04-19T09:05:06Z</dc:date>
    <item>
      <title>code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87151#M24889</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello guys, anyone can help me to make this code more efficient(see code below), please not using sql:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to do something with the week12, week28, week40 and week64,&lt;/P&gt;&lt;P&gt;try to do it more standard, because if I need to change the dataset new with different weeks (i.e week1, wek3, week5, week52),&lt;/P&gt;&lt;P&gt;I would have to change manually these weeks..and it is no really efficient.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;something like week_i,where i=1 to 4&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any help?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please see the code below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data new;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;input visit &amp;amp;$6. treat &amp;amp;$7. pop :1. phase &amp;amp;$2.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IV&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&amp;nbsp; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; IV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IV &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *summary of subjects by phase;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc summary data=new nway;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class treat&amp;nbsp; phase visit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pop;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output out=newsum(drop=_:) n=n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; *summary of subjects by treat;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc summary data=new nway;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class treat;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pop;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output out=new0sum (drop=_:) n=n2;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *merging the summaries;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data newsumtotal;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge new0sum newsum;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by treat;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *transposing to get the final table;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc transpose data=newsumtotal out=newsumtotalt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by treat n2 phase;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id visit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var n;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;*convert numeric variable to character (I want to make this part more efficient);&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data newf (drop=week12 week28 week40 week64);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set newsumtotalt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; _week12=put(week12,3.0)||' '||'('||put(week12/n2,percent6.2)||')';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; _week28=put(week28,3.0)||' '||'('||put(week28/n2,percent6.2)||')';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; _week40=put(week40,3.0)||' '||'('||put(week40/n2,percent6.2)||')';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; _week64=put(week64,3.0)||' '||'('||put(week64/n2,percent6.2)||')';&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; data newfr (rename=(_week12=week12 _week28=week28 _week40=week40 &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; _week64=week64) drop=_name_ );&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retain&amp;nbsp; treat n2 phase _week12 _week28&lt;/P&gt;&lt;P&gt;_week40 _week64;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; set newf;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;V&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Tue, 17 Apr 2012 23:14:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87151#M24889</guid>
      <dc:creator>michtka</dc:creator>
      <dc:date>2012-04-17T23:14:58Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87152#M24890</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;How about:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE&gt;data new;
input visit &amp;amp;$6. treat &amp;amp;$7. pop :1. phase &amp;amp;$2.;
cards;
week12&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; I
week28&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; II
week40&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III
week64&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IV 
week64&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; III
week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; III
week40&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I 
week12&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II
week12&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II
week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; II
week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; II
week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; III
week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; IV
week12&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IV
week64&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III
week64&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II
week12&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I
week12&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I
week64&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II
week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III
;
run;
proc freq data=new noprint;
 tables treat/out=x(drop=percent) nocum nopercent;
run;
proc freq data=new noprint;
 tables treat*phase*visit/out=xx(drop=percent) nocum nopercent;
run;
data temp(drop=count);
 merge xx x(rename=(count=n2));
 by treat;
 length value $ 20;
 value=catx(' ',count,cats('(',put(count/n2,percent8.2),')'));
run;
proc transpose data=temp out=want(drop=_name_);
 by treat n2 phase;
 id visit;
 var value;
run;
data name;
 set sashelp.vcolumn;
 where libname='WORK' and memname='WANT';
 num=ifn(name eq: 'week',input(compress(name,,'kd'),best8.),0);
run;
proc sort data=name;by num;run;
data _null_;
 set name end=last;
 if _n_ eq 1 then call execute('data want; retain ');
 call execute(name);
 if last then call execute(';set want;run;');
run;


&lt;/PRE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 05:39:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87152#M24890</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-04-18T05:39:10Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87153#M24891</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Ksharp.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I couple of things:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1. You use proc freq intead of proc summary...it is another option as we talked. good.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;2. Very nice the option value making the right format before transpose the varibales. Thank you. (I will get that the right answer).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;3. Thank you for the last part, making the code more standard using the libraries of SAS, and using the function execute.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;At the moment I dont need it because (from the transpose of visit, the variables weekX are generated, and I just got your solution in point 2, making the formatting before the transpose) Thanks! &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt; &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 09:02:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87153#M24891</guid>
      <dc:creator>michtka</dc:creator>
      <dc:date>2012-04-18T09:02:07Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87154#M24892</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One more wrinkle ... combine the first three steps into two, while eliminating a MERGE:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc freq data=new noprint;&lt;/P&gt;&lt;P&gt;tables treat*phase*visit / out=xx(drop=percent);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data temp (drop=count);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; n2=0;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until (last.treat);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set xx (keep=treat count);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by treat;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; n2 + count;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; do until (last.treat);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set xx;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by treat;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; length value $ 20;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; value=catx(' ',count,cats('(',put(count/n2,percent8.2),')'));&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It should be faster ... hopefully you'll report back the results.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 18 Apr 2012 12:58:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87154#M24892</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-04-18T12:58:07Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87155#M24893</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I don't know . I did not test it yet.&lt;/P&gt;&lt;P&gt;Maybe You are right. You are using a special skill DOW . Mine is CLASSIC method .&lt;/P&gt;&lt;P&gt;They both can get the same result.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 02:35:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87155#M24893</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-04-19T02:35:59Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87156#M24894</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ksharp,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Actually, I wasn't asking you to do the testing.&amp;nbsp; I was hoping the original poster would, as a sort of quid pro quo.&amp;nbsp; Notice it's not just DOW, it's also using the output data set from PROC FREQ to calculate N2.&amp;nbsp; There's no need to return to the original, larger data set for those calculations.&amp;nbsp; Even sticking to your methods, you could have created XX first, then used XX to create X.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm reminded of the days when SAS first introduced PROC SQL.&amp;nbsp; The reaction ranged widely.&amp;nbsp; On the one hand, the SQL lovers were saying, "Great.&amp;nbsp; I'll never need a DATA step again."&amp;nbsp; And the SAS diehards were saying, "Why would I ever need that?"&amp;nbsp; The best answer lies somewhere in between.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 03:53:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87156#M24894</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2012-04-19T03:53:26Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87157#M24895</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Astounding,&lt;/P&gt;&lt;P&gt;Ou. I understand what you mean. That is a good idea.&lt;/P&gt;&lt;P&gt;About the advantage of SQL and DataStep, it is hard to say. At some time, SQL is better ,whereas at some another time DataStep is better.&lt;/P&gt;&lt;P&gt;I recommend to master these two skill all, then you will find the world is so simple.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I heard it from somewhere that CLASSIC sas programmer is very arrogant and selfish.&lt;/P&gt;&lt;P&gt;But I don't think so , at least NOT for me. I LOVE SQL too.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 09:05:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87157#M24895</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2012-04-19T09:05:06Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87158#M24896</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Ksharp, my final code with your help become like this (in boldface are the changes with my original code).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data new;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;input visit &amp;amp;$6. treat &amp;amp;$7. pop :1. phase &amp;amp;$2.;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IV &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp;&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week40&amp;nbsp;&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp; IV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IV&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp; drug&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week12&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; I&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week64&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; II&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;week28&amp;nbsp; placebo&amp;nbsp;&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; III&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *summary of subjects by phase;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc summary data=new nway;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class treat&amp;nbsp; phase visit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pop;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output out=newsum(drop=_:) n=n;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*summary of subjects by treat;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc summary data=new nway;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; class treat;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; var pop;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; output out=new0sum (drop=_:) n=n2;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *merging the summaries;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; data newsumtotal;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; merge new0sum newsum;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by treat;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;length value $ 20;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt; value=catx(' ',n,cats('(',put(n/n2,percent8.2),')'));&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *transposing to get the final table;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; proc transpose data=newsumtotal out=newsumtotalt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; by treat n2 phase;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; id visit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;STRONG&gt;&amp;nbsp; var value;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 22:35:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87158#M24896</guid>
      <dc:creator>michtka</dc:creator>
      <dc:date>2012-04-19T22:35:52Z</dc:date>
    </item>
    <item>
      <title>Re: code more efficient</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87159#M24897</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thanks Astounding for your help, I will keep your piece of code in my mind, as well as the execute function proposed by Ksharp (I dont need it at the moment).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Only just, I needed to be more "efficient" (I known is not the right word) format, as Ksharp suggested.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 19 Apr 2012 22:40:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/code-more-efficient/m-p/87159#M24897</guid>
      <dc:creator>michtka</dc:creator>
      <dc:date>2012-04-19T22:40:23Z</dc:date>
    </item>
  </channel>
</rss>

