<?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: Coding Help in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723695#M224615</link>
    <description>&lt;P&gt;Hi &lt;A class="trigger-hovercard" style="color: #007dc3;" href="https://communities.sas.com/t5/user/viewprofilepage/user-id/339070" target="_blank" rel="noopener"&gt;mounikag&lt;/A&gt;,&lt;/P&gt;
&lt;P&gt;You can do it using the following approach:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data x;
   length subj astdt 8 inj1-inj4 $10;
   infile datalines truncover;
   input subj astdt yymmdd10. inj1-inj4 $;
   format astdt yymmdd10.;
   datalines;
101 2020-06-03    2019-07-18     2019-08-15     2019-09-10     2019-11-14
102 2019-08-07    2019-06-12     2019-07-08     2019-08-12     2019-09-30
103 2020-01-09    2019-11-13     2019-12-16     2020-01-08     2020-03-04
104 2019-12-13    2019-11-13     2019-12-16     2020-01-08     2020-03-04  
105 2019-05-15    2019-05-13
106 2019-08-05    2019-07-17     2019-08-14 
107 2019-08-21    2019-07-17     2019-08-14 
108 2020-06-30    2020-05-27     2020-06-24     2020-07-22
;

DATA WANT;
   set x;
   array inj $ inj1-inj4;
   array injn injn1-injn4;
   no_injs_before_astdt = 0;
   do i=1 to dim(inj);
      injn[i] = input(inj[i],yymmdd10.);
      no_injs_before_astdt + (astdt &amp;gt; injn[i] &amp;gt; .);
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can drop any variables you don't like to keep. Also, in your data last line you have an error, No.of injs before astdt should be equal 2, not 3.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This code essentially converts you character dates into numeric, and then loops through array elements and increments &lt;CODE class=" language-sas"&gt;no_injs_before_astdt&lt;/CODE&gt; every time when &lt;CODE class=" language-sas"&gt;(astdt &amp;gt; injn[i] &amp;gt; .)&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope, this helps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 04 Mar 2021 22:23:54 GMT</pubDate>
    <dc:creator>LeonidBatkhan</dc:creator>
    <dc:date>2021-03-04T22:23:54Z</dc:date>
    <item>
      <title>Coding Help</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723658#M224594</link>
      <description>&lt;P&gt;Hi Team,&lt;/P&gt;&lt;P&gt;data x;&lt;BR /&gt;infile;&lt;BR /&gt;datalines;&lt;BR /&gt;subj&amp;nbsp; &amp;nbsp; astdt(NUm)&amp;nbsp; &amp;nbsp; inj1(char)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inj2(char)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inj3(char)&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; inj4(char)&amp;nbsp; &amp;nbsp; &amp;nbsp; No.of injs before astdt&lt;BR /&gt;101&amp;nbsp; &amp;nbsp; 2020-06-03&amp;nbsp; &amp;nbsp; 2019-07-18&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-08-15&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-09-10&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-11-14&amp;nbsp; &amp;nbsp; &amp;nbsp; 4&lt;BR /&gt;102&amp;nbsp; &amp;nbsp; 2019-08-07&amp;nbsp; &amp;nbsp; 2019-06-12&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-07-08&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-08-12&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-09-30&amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;BR /&gt;103&amp;nbsp; &amp;nbsp; 2020-01-09&amp;nbsp; &amp;nbsp; 2019-11-13&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-12-16&amp;nbsp; &amp;nbsp; &amp;nbsp;2020-01-08&amp;nbsp; &amp;nbsp; &amp;nbsp; 2020-03-04&amp;nbsp; &amp;nbsp; &amp;nbsp; 3&lt;BR /&gt;104&amp;nbsp; &amp;nbsp; 2019-12-13&amp;nbsp; &amp;nbsp; 2019-11-13&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-12-16&amp;nbsp; &amp;nbsp; &amp;nbsp;2020-01-08&amp;nbsp; &amp;nbsp; &amp;nbsp; 2020-03-04&amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;BR /&gt;105&amp;nbsp; &amp;nbsp; 2019-05-15&amp;nbsp; &amp;nbsp; 2019-05-13&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;BR /&gt;106&amp;nbsp; &amp;nbsp; 2019-08-05&amp;nbsp; &amp;nbsp; 2019-07-17&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-08-14&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; 1&lt;BR /&gt;107&amp;nbsp; &amp;nbsp; 2019-08-21&amp;nbsp; &amp;nbsp; 2019-07-17&amp;nbsp; &amp;nbsp; &amp;nbsp;2019-08-14&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; 2&lt;BR /&gt;108&amp;nbsp; &amp;nbsp; 2020-06-30&amp;nbsp; &amp;nbsp; 2020-05-27&amp;nbsp; &amp;nbsp; &amp;nbsp;2020-06-24&amp;nbsp; &amp;nbsp; &amp;nbsp;2020-07-22&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;3&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;I have data as above so, I would like to have help in coding.&lt;BR /&gt;I have four injections(inj1, inj2, inj3, inj4)which is in character format and i have astdt(ae start date) in numeric format.&lt;BR /&gt;i would like to know number of prior injections before astdt for each subject.&lt;BR /&gt;so, it should count the number of injections(non-missing injs) prior to the astdt.&lt;BR /&gt;please provide me a code it would be helpful .Thanks in advance.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&lt;BR /&gt;Mounika.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Mar 2021 21:26:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723658#M224594</guid>
      <dc:creator>mounikag</dc:creator>
      <dc:date>2021-03-04T21:26:53Z</dc:date>
    </item>
    <item>
      <title>Re: Coding Help</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723692#M224613</link>
      <description>&lt;P&gt;Below should do it:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines missover truncover;
	input subj $ astdt yymmdd10. inj1 $11. inj2 $11. inj3 $11. inj4 $11.;
	format astdt date9.;
	datalines;
101 2020-06-03 2019-07-18 2019-08-15 2019-09-10 2019-11-14
102 2019-08-07 2019-06-12 2019-07-08 2019-08-12 2019-09-30
103 2020-01-09 2019-11-13 2019-12-16 2020-01-08 2020-03-04
104 2019-12-13 2019-11-13 2019-12-16 2020-01-08 2020-03-04
105 2019-05-15 2019-05-13                                 
106 2019-08-05 2019-07-17 2019-08-14                      
107 2019-08-21 2019-07-17 2019-08-14                      
108 2020-06-30 2020-05-27 2020-06-24 2020-07-22           
;
run;

data want;
	set have;
	array inj{4} $;
	array cnt{4};

	do i = 1 to dim(inj);
		if input(inj{i},yymmdd10.) &amp;lt; astdt and ^missing(inj{i}) then
			cnt{i} = 1;
		else cnt{i} = 0;
	end;

	total = sum(of cnt1 - cnt4);
	drop cnt1 - cnt4 i;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 04 Mar 2021 22:19:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723692#M224613</guid>
      <dc:creator>qoit</dc:creator>
      <dc:date>2021-03-04T22:19:29Z</dc:date>
    </item>
    <item>
      <title>Re: Coding Help</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723695#M224615</link>
      <description>&lt;P&gt;Hi &lt;A class="trigger-hovercard" style="color: #007dc3;" href="https://communities.sas.com/t5/user/viewprofilepage/user-id/339070" target="_blank" rel="noopener"&gt;mounikag&lt;/A&gt;,&lt;/P&gt;
&lt;P&gt;You can do it using the following approach:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data x;
   length subj astdt 8 inj1-inj4 $10;
   infile datalines truncover;
   input subj astdt yymmdd10. inj1-inj4 $;
   format astdt yymmdd10.;
   datalines;
101 2020-06-03    2019-07-18     2019-08-15     2019-09-10     2019-11-14
102 2019-08-07    2019-06-12     2019-07-08     2019-08-12     2019-09-30
103 2020-01-09    2019-11-13     2019-12-16     2020-01-08     2020-03-04
104 2019-12-13    2019-11-13     2019-12-16     2020-01-08     2020-03-04  
105 2019-05-15    2019-05-13
106 2019-08-05    2019-07-17     2019-08-14 
107 2019-08-21    2019-07-17     2019-08-14 
108 2020-06-30    2020-05-27     2020-06-24     2020-07-22
;

DATA WANT;
   set x;
   array inj $ inj1-inj4;
   array injn injn1-injn4;
   no_injs_before_astdt = 0;
   do i=1 to dim(inj);
      injn[i] = input(inj[i],yymmdd10.);
      no_injs_before_astdt + (astdt &amp;gt; injn[i] &amp;gt; .);
   end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You can drop any variables you don't like to keep. Also, in your data last line you have an error, No.of injs before astdt should be equal 2, not 3.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This code essentially converts you character dates into numeric, and then loops through array elements and increments &lt;CODE class=" language-sas"&gt;no_injs_before_astdt&lt;/CODE&gt; every time when &lt;CODE class=" language-sas"&gt;(astdt &amp;gt; injn[i] &amp;gt; .)&lt;/CODE&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope, this helps.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Mar 2021 22:23:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723695#M224615</guid>
      <dc:creator>LeonidBatkhan</dc:creator>
      <dc:date>2021-03-04T22:23:54Z</dc:date>
    </item>
    <item>
      <title>Re: Coding Help</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723708#M224625</link>
      <description>&lt;P&gt;If your INJ values are really arranged as&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;All actual dates are to the left (i.e. missing dates are always on the right)&lt;/LI&gt;
&lt;LI&gt;INJ dates are in ascending order&lt;/LI&gt;
&lt;/OL&gt;
&lt;P&gt;Then you can use a WHILE expression and/or a leave statement to stop the loop - you don't always have to go from 1 to dim(INJ):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile datalines missover truncover;
	input subj $ astdt yymmdd10. inj1 $11. inj2 $11. inj3 $11. inj4 $11.;
	format astdt date9.;
	datalines;
101 2020-06-03 2019-07-18 2019-08-15 2019-09-10 2019-11-14
102 2019-08-07 2019-06-12 2019-07-08 2019-08-12 2019-09-30
103 2020-01-09 2019-11-13 2019-12-16 2020-01-08 2020-03-04
104 2019-12-13 2019-11-13 2019-12-16 2020-01-08 2020-03-04
105 2019-05-15 2019-05-13                                 
106 2019-08-05 2019-07-17 2019-08-14                      
107 2019-08-21 2019-07-17 2019-08-14                      
108 2020-06-30 2020-05-27 2020-06-24 2020-07-22           
;
run;

data want (drop=i);
	set have;
	array inj  $ inj: ;

	do i = 1 to dim(inj) while (inj{i}^=' ');
      if input(inj{i},yymmdd10.)&amp;lt;astdt then total=sum(total,1);
      else leave;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Even more compact, but likely more obtuse:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want (rename=(i=total));
  set have;
  array inj $ inj: ;
  do i=0 to dim(inj)-1 while (input(inj{i+1},yymmdd10.)&amp;lt;astdt and inj{i+1}^=' ');
  end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 04 Mar 2021 22:58:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Coding-Help/m-p/723708#M224625</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2021-03-04T22:58:03Z</dc:date>
    </item>
  </channel>
</rss>

