<?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 Insert data to new columns based on analysis result on multiple columns by using do loops in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895174#M353635</link>
    <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I have this problem and looking for help.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset like below :&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CIF&lt;/TD&gt;&lt;TD&gt;DPD_1&lt;/TD&gt;&lt;TD&gt;DPD_2&lt;/TD&gt;&lt;TD&gt;DPD_...&lt;/TD&gt;&lt;TD&gt;DPD_13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2345&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3456&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;72&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4567&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;45&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;190&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now, I need to check whether the CIF ever got the DPD's, we categorize them into Ever30 ( 0-30) , Ever60 (30-60), Ever90 (60-90), Ever120 (90-120), Ever180 ( 120-180), Ever180+ (180++).&amp;nbsp; So, I wrote below queries:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data want;
set have;
length EverXDays 7;
array _DPD{13} DPD_1-DPD_13;

do i = 1 to dim(_DPD);

if _DPD[i] &amp;gt; 0 then do;
EverXDays = 1;
end;
if _DPD[i] &amp;gt; 0 and _DPD[i] &amp;lt;= 30 then do;
Ever30 = 1;
end;
if _DPD[i] &amp;gt; 30 and _DPD[i] &amp;lt;= 60 then do;
Ever60 = 1;
end;
if _DPD[i] &amp;gt; 60 and _DPD[i] &amp;lt;= 90 then do;
Ever90 = 1;
end;
if _DPD[i] &amp;gt; 90 and _DPD[i] &amp;lt;= 120 then do;
Ever120 = 1;
end;
if _DPD[i] &amp;gt; 120 and _DPD[i] &amp;lt;= 180 then do;
Ever180 = 1;
end;
if _DPD[i] &amp;gt; 180  then do;
Ever180Plus = 1;
end;

put _DPD(i);
leave;

end;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;But the result wasn't like what I expected.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The expectation is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CIF&lt;/TD&gt;&lt;TD&gt;DPD_1&lt;/TD&gt;&lt;TD&gt;DPD_2&lt;/TD&gt;&lt;TD&gt;DPD_...&lt;/TD&gt;&lt;TD&gt;DPD_13&lt;/TD&gt;&lt;TD&gt;EverXdays&lt;/TD&gt;&lt;TD&gt;Ever30&lt;/TD&gt;&lt;TD&gt;Ever60&lt;/TD&gt;&lt;TD&gt;Ever90&lt;/TD&gt;&lt;TD&gt;Ever120&lt;/TD&gt;&lt;TD&gt;Ever180&lt;/TD&gt;&lt;TD&gt;Ever180+&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2345&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3456&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;72&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4567&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;45&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;190&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Much appreciate for your help. Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 21 Sep 2023 04:29:17 GMT</pubDate>
    <dc:creator>Moonlight_26</dc:creator>
    <dc:date>2023-09-21T04:29:17Z</dc:date>
    <item>
      <title>Insert data to new columns based on analysis result on multiple columns by using do loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895174#M353635</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;&lt;P&gt;I have this problem and looking for help.&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset like below :&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CIF&lt;/TD&gt;&lt;TD&gt;DPD_1&lt;/TD&gt;&lt;TD&gt;DPD_2&lt;/TD&gt;&lt;TD&gt;DPD_...&lt;/TD&gt;&lt;TD&gt;DPD_13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2345&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3456&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;72&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4567&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;45&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;190&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now, I need to check whether the CIF ever got the DPD's, we categorize them into Ever30 ( 0-30) , Ever60 (30-60), Ever90 (60-90), Ever120 (90-120), Ever180 ( 120-180), Ever180+ (180++).&amp;nbsp; So, I wrote below queries:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data want;
set have;
length EverXDays 7;
array _DPD{13} DPD_1-DPD_13;

do i = 1 to dim(_DPD);

if _DPD[i] &amp;gt; 0 then do;
EverXDays = 1;
end;
if _DPD[i] &amp;gt; 0 and _DPD[i] &amp;lt;= 30 then do;
Ever30 = 1;
end;
if _DPD[i] &amp;gt; 30 and _DPD[i] &amp;lt;= 60 then do;
Ever60 = 1;
end;
if _DPD[i] &amp;gt; 60 and _DPD[i] &amp;lt;= 90 then do;
Ever90 = 1;
end;
if _DPD[i] &amp;gt; 90 and _DPD[i] &amp;lt;= 120 then do;
Ever120 = 1;
end;
if _DPD[i] &amp;gt; 120 and _DPD[i] &amp;lt;= 180 then do;
Ever180 = 1;
end;
if _DPD[i] &amp;gt; 180  then do;
Ever180Plus = 1;
end;

put _DPD(i);
leave;

end;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;But the result wasn't like what I expected.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The expectation is :&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;CIF&lt;/TD&gt;&lt;TD&gt;DPD_1&lt;/TD&gt;&lt;TD&gt;DPD_2&lt;/TD&gt;&lt;TD&gt;DPD_...&lt;/TD&gt;&lt;TD&gt;DPD_13&lt;/TD&gt;&lt;TD&gt;EverXdays&lt;/TD&gt;&lt;TD&gt;Ever30&lt;/TD&gt;&lt;TD&gt;Ever60&lt;/TD&gt;&lt;TD&gt;Ever90&lt;/TD&gt;&lt;TD&gt;Ever120&lt;/TD&gt;&lt;TD&gt;Ever180&lt;/TD&gt;&lt;TD&gt;Ever180+&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;40&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2345&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;201&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3456&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;72&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4567&lt;/TD&gt;&lt;TD&gt;25&lt;/TD&gt;&lt;TD&gt;45&lt;/TD&gt;&lt;TD&gt;...&lt;/TD&gt;&lt;TD&gt;190&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Much appreciate for your help. Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Sep 2023 04:29:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895174#M353635</guid>
      <dc:creator>Moonlight_26</dc:creator>
      <dc:date>2023-09-21T04:29:17Z</dc:date>
    </item>
    <item>
      <title>Re: Insert data to new columns based on analysis result on multiple columns by using do loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895342#M353742</link>
      <description>&lt;P&gt;In the absence of actual sample data in the form of a working data step, here is untested code:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (drop=d e); 
  set have;
  everxdays=(min(of dpd_:)&amp;gt;0);
  array ev {1:5}                 ever30 ever60 ever90 ever120 ever180 ;
  array map {1:180} _temporary_ (30*1   ,30*2  ,30*3  ,30*4   ,60*5 ) ;

  do e=1 to dim(ev);  ev{d}=0; end;

  array dp {*} dpd_: ;
  do d=1 to dim(dp);
    if 1&amp;lt;=dp{d}&amp;lt;=180 then ev{map{dp{d}}}=1;
  end;
  ever_over_180 = (max(of dp{*})&amp;gt;180);
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This program assumes that the DP vars all assume integer values.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The temporary array MAP&amp;nbsp; &amp;nbsp;maps all integer values from 1 to 180 to a value of 1 through 5, indexing the five variables ever30, ever60, ever90, ever120, and ever180, which are the five elements of array EV.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;For example dp values 1 through 30 are mapped to 1, which means that array element EV{1}&amp;nbsp; (variable ever30) is set to 1.&amp;nbsp; If any dp value is between 31 and 60, then element EV{2}&amp;nbsp; (var ever60) is set to 1, etc.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Sep 2023 20:27:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895342#M353742</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2023-09-21T20:27:13Z</dc:date>
    </item>
    <item>
      <title>Re: Insert data to new columns based on analysis result on multiple columns by using do loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895384#M353761</link>
      <description>&lt;P&gt;I have the solutions, it works for my case.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the code, so this might help anyone facing the same problem with me &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=""&gt;data want;
set have ;
format Consistency_DPD Ever30 Ever60 Ever90 Ever120 Ever180 Ever180Plus EverXDays Best.;

array _DPD{13} DPD_1-DPD_13;

Consistency_DPD=ifc(range(of DPD:)=0,0,1);

do i = 1 to dim(_DPD);
if _DPD[i] &amp;gt; 0 then do;
EverXDays = 1;
end;
if _DPD[i] &amp;gt; 0 and _DPD[i] &amp;lt;= 30 then do;
Ever30 = 1;
end;
if _DPD[i] &amp;gt; 30 and _DPD[i] &amp;lt;= 60 then do;
Ever60 = 1;
end;
if _DPD[i] &amp;gt; 60 and _DPD[i] &amp;lt;= 90 then do;
Ever90 = 1;
end;
if _DPD[i] &amp;gt; 90 and _DPD[i] &amp;lt;= 120 then do;
Ever120 = 1;
end;
if _DPD[i] &amp;gt; 120 and _DPD[i] &amp;lt;= 180 then do;
Ever180 = 1;
end;
if _DPD[i] &amp;gt; 180  then do;
Ever180Plus = 1;
end;

put _DPD(i);


end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 22 Sep 2023 06:37:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895384#M353761</guid>
      <dc:creator>Moonlight_26</dc:creator>
      <dc:date>2023-09-22T06:37:03Z</dc:date>
    </item>
    <item>
      <title>Re: Insert data to new columns based on analysis result on multiple columns by using do loops</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895385#M353762</link>
      <description>Much appreciate for your reply &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
      <pubDate>Fri, 22 Sep 2023 06:39:32 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Insert-data-to-new-columns-based-on-analysis-result-on-multiple/m-p/895385#M353762</guid>
      <dc:creator>Moonlight_26</dc:creator>
      <dc:date>2023-09-22T06:39:32Z</dc:date>
    </item>
  </channel>
</rss>

