<?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 IF then statement in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46127#M9534</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Hi ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are using macro if condition for data variabl check.Please use data step if statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data temf;&lt;/P&gt;&lt;P&gt;set trans;&lt;/P&gt;&lt;P&gt;per_miss = nomiss/(nomiss+nmiss);&lt;/P&gt;&lt;P&gt;ind_name = trim(_name_)||'_in';&lt;/P&gt;&lt;P&gt;ind_name = trim(_name_)||'_in';&lt;/P&gt;&lt;P&gt;medianstr = put(median,3.);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data temf;&lt;/P&gt;&lt;P&gt;set temf;&lt;/P&gt;&lt;P&gt;if per_miss&amp;nbsp; &amp;gt; 0.50 then do;&lt;/P&gt;&lt;P&gt;indicator = trim(ind_name)||'=('||trim(_name_)||'=.)';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else if 0.10 &amp;lt;per_miss &amp;lt;= 0.50 then do;&lt;/P&gt;&lt;P&gt;indicator = trim(ind_name)||'='||trim(medianstr);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else do;&lt;/P&gt;&lt;P&gt;indicator = 'none';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 28 Mar 2012 05:13:47 GMT</pubDate>
    <dc:creator>manojinpec</dc:creator>
    <dc:date>2012-03-28T05:13:47Z</dc:date>
    <item>
      <title>IF then statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46126#M9533</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi guys I really neeed help with this Macro!&lt;/P&gt;&lt;P&gt;it seems like my If then statemet is not working properly:&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;%macro exploredata (data);&lt;/P&gt;&lt;P&gt;proc contents data = &amp;amp;data out = v (keep=type name);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sql noprint;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;&lt;P&gt;*where type = 1 specifies the numerical variable;&lt;/P&gt;&lt;P&gt;select name into :m separated by ' ' from v where type = 1;&lt;/P&gt;&lt;P&gt;Quit;&lt;/P&gt;&lt;P&gt;proc means data = &amp;amp;data;&lt;/P&gt;&lt;P&gt;var &amp;amp;m;&lt;/P&gt;&lt;P&gt;output out = temp1 min=&amp;amp;m;&lt;/P&gt;&lt;P&gt;run; &lt;/P&gt;&lt;P&gt;proc means data=&amp;amp;data;&lt;/P&gt;&lt;P&gt;var &amp;amp;m;&lt;/P&gt;&lt;P&gt;output out = temp2 n =&amp;amp;m;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc means data =&amp;amp;data;&lt;/P&gt;&lt;P&gt;var &amp;amp;m;&lt;/P&gt;&lt;P&gt;output out=temp3 max =&amp;amp;M&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc means data = &amp;amp;data;&lt;/P&gt;&lt;P&gt;output out = temp4 mean=&amp;amp;m;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc means data =&amp;amp;data;&lt;/P&gt;&lt;P&gt;output out = temp5 nmiss=&amp;amp;m;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc means data=&amp;amp;data;&lt;/P&gt;&lt;P&gt;var &amp;amp;m;&lt;/P&gt;&lt;P&gt;output out = temp6 median =&amp;amp;m;&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;data tem_all;&lt;/P&gt;&lt;P&gt;set temp1 temp2 temp3 temp4 temp5 temp6;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc transpose data = tem_all out=trans (rename = (COL1=min COL2 = nmiss COL3 = max COL4 = mean COL5=nomiss COL6= median)); &lt;/P&gt;&lt;P&gt;var &amp;amp;m;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;Data temf;&lt;/P&gt;&lt;P&gt;set trans;&lt;/P&gt;&lt;P&gt;per_miss = nomiss/(nomiss+nmiss);&lt;/P&gt;&lt;P&gt;ind_name = trim(_name_)||'_in';&lt;/P&gt;&lt;P&gt;ind_name = trim(_name_)||'_in';&lt;/P&gt;&lt;P&gt;medianstr = put(median,3.);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data temf;&lt;/P&gt;&lt;P&gt;set temf;&lt;/P&gt;&lt;P&gt;%if per_miss&amp;nbsp; &amp;gt; 0.50 %then %do;&lt;/P&gt;&lt;P&gt;indicator = trim(ind_name)||'=('||trim(_name_)||'=.)';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%else %if 0.10 &amp;lt;per_miss &amp;lt;= 0.50 %then %do;&lt;/P&gt;&lt;P&gt;indicator = trim(ind_name)||'='||trim(medianstr);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;%else %do;&lt;/P&gt;&lt;P&gt;indicator = 'none';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;%end;&lt;/P&gt;&lt;P&gt;proc contents data = temf out = temf1(keep= name type );&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data temf2;&lt;/P&gt;&lt;P&gt;set temf1;set temf;&lt;/P&gt;&lt;P&gt;drop name;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;select indicator into :mv separated by ';' from temf2;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;%mend exploredata;&lt;/P&gt;&lt;P&gt;%exploredata(A);&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 Mar 2012 04:57:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46126#M9533</guid>
      <dc:creator>Anthonyroger</dc:creator>
      <dc:date>2012-03-28T04:57:29Z</dc:date>
    </item>
    <item>
      <title>IF then statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46127#M9534</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt; Hi ,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You are using macro if condition for data variabl check.Please use data step if statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Data temf;&lt;/P&gt;&lt;P&gt;set trans;&lt;/P&gt;&lt;P&gt;per_miss = nomiss/(nomiss+nmiss);&lt;/P&gt;&lt;P&gt;ind_name = trim(_name_)||'_in';&lt;/P&gt;&lt;P&gt;ind_name = trim(_name_)||'_in';&lt;/P&gt;&lt;P&gt;medianstr = put(median,3.);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;data temf;&lt;/P&gt;&lt;P&gt;set temf;&lt;/P&gt;&lt;P&gt;if per_miss&amp;nbsp; &amp;gt; 0.50 then do;&lt;/P&gt;&lt;P&gt;indicator = trim(ind_name)||'=('||trim(_name_)||'=.)';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else if 0.10 &amp;lt;per_miss &amp;lt;= 0.50 then do;&lt;/P&gt;&lt;P&gt;indicator = trim(ind_name)||'='||trim(medianstr);&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else do;&lt;/P&gt;&lt;P&gt;indicator = 'none';&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 Mar 2012 05:13:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46127#M9534</guid>
      <dc:creator>manojinpec</dc:creator>
      <dc:date>2012-03-28T05:13:47Z</dc:date>
    </item>
    <item>
      <title>Re: IF then statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46128#M9535</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You don't need macro statements in your data step, and you don't need to reread temf to set indicator.&lt;/P&gt;&lt;P&gt;Replace this code&lt;/P&gt;&lt;P&gt;---------------------------------------------------------&lt;BR /&gt;run;&lt;BR /&gt;data temf;&lt;BR /&gt;set temf;&lt;BR /&gt;%if per_miss&amp;nbsp; &amp;gt; 0.50 %then %do;&lt;BR /&gt;indicator = trim(ind_name)||'=('||trim(_name_)||'=.)';&lt;BR /&gt;run;&lt;BR /&gt;%end;&lt;BR /&gt;%else %if 0.10 &amp;lt;per_miss &amp;lt;= 0.50 %then %do;&lt;BR /&gt;indicator = trim(ind_name)||'='||trim(medianstr);&lt;BR /&gt;run;&lt;BR /&gt;%end;&lt;BR /&gt;%else %do;&lt;BR /&gt;indicator = 'none';&lt;BR /&gt;----------------------------------------------------------&lt;/P&gt;&lt;P&gt;with this code&lt;/P&gt;&lt;P&gt;----------------------------------------------------------&lt;BR /&gt;select;&lt;BR /&gt;&amp;nbsp; when per_miss &amp;gt; 0.5 indicator = trim(ind_name)||'=('||trim(_name_)||'=.)';&lt;BR /&gt;&amp;nbsp; when per_miss &amp;gt; 0.1 indicator = trim(ind_name)||'='||trim(medianstr);&lt;BR /&gt;&amp;nbsp; otherwise indicator = 'none';&lt;BR /&gt;&amp;nbsp; end;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Aug 2015 03:38:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46128#M9535</guid>
      <dc:creator>wannabeguru</dc:creator>
      <dc:date>2015-08-22T03:38:26Z</dc:date>
    </item>
    <item>
      <title>Re: IF then statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46129#M9536</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When doing comparisons with decimal numbers in macros you need to use %sysevalf&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ie&lt;/P&gt;&lt;P&gt;%sysevalf(per_miss&amp;gt;0.50)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However as indicated above your code doesn't require macro logic, only data step logic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;You should also look into the STACKODS option of proc means, you can&lt;/P&gt;&lt;P&gt;probably avoid multiple passes of proc means. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Aug 2015 05:35:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46129#M9536</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-08-22T05:35:47Z</dc:date>
    </item>
    <item>
      <title>Re: IF then statement</title>
      <link>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46130#M9537</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Some initial desk-checking with the addition of SAS statement would likely have been revealing about the "macro language compile logic" being used incorrectly:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;OPTIONS MACROGEN SYMBOLGEN MLOGIC MPRINT; &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;This will raise evidence that the %IF / %THEN logic is not appropriate and instead must be DATA step language IF / THEN logic.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As well, adding PUTLOG _ALL_;&amp;nbsp;&amp;nbsp; statements at points in the code-processing would have also been revealing.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sat, 22 Aug 2015 20:02:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/IF-then-statement/m-p/46130#M9537</guid>
      <dc:creator>sbb</dc:creator>
      <dc:date>2015-08-22T20:02:45Z</dc:date>
    </item>
  </channel>
</rss>

