<?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: data logic in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261152#M50763</link>
    <description>&lt;P&gt;This isn't the most elegant solution but I believe it gets you what you want. &amp;nbsp;I also assumed that you wanted it BY subject. &amp;nbsp;So that piece is in there as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I also worked around the date (the second HAVE dataset due to my SAS not being able to read the dates you provided).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA Have; &lt;BR /&gt; INPUT SUBJ 1-3 EXSTDTC $5-14 DOSE 16-18; &lt;BR /&gt; DATALINES; &lt;BR /&gt;111 2015-04-01 100&lt;BR /&gt;111 2015-04-09&lt;BR /&gt;111 2015-04-15 100&lt;BR /&gt;111 2015-04-22 100&lt;BR /&gt;222 2015-04-01 100&lt;BR /&gt;222 2015-04-09 100&lt;BR /&gt;333 2015-04-01 100&lt;BR /&gt;333 2015-04-09&lt;BR /&gt;444 2015-04-10 100&lt;BR /&gt;444 100&lt;BR /&gt;444 2015-04-20 100&lt;BR /&gt;; &lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA HAVE; &lt;BR /&gt; SET HAVE (RENAME = (EXSTDTC = EXSTDTC_OLD)); &lt;BR /&gt; YEAR = SUBSTR(EXSTDTC_OLD,1,4); &lt;BR /&gt; MONTH = SUBSTR(EXSTDTC_OLD,6,2);&lt;BR /&gt; DAY = SUBSTR(EXSTDTC_OLD,9,2);&lt;BR /&gt; EXSTDTC = MDY(MONTH,DAY,YEAR);&lt;BR /&gt; FORMAT EXSTDTC MMDDYY10.;&lt;BR /&gt; DROP YEAR MONTH DAY EXSTDTC_OLD;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC SORT DATA = HAVE; &lt;BR /&gt; BY SUBJ;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA HAVE2 WANT; &lt;BR /&gt; SET HAVE; &lt;BR /&gt; BY SUBJ;&lt;BR /&gt; LAG_DT = LAG(EXSTDTC);&lt;BR /&gt; IF FIRST.SUBJ THEN LAG_DT = .; &lt;BR /&gt; DIFF = EXSTDTC- LAG_DT; &lt;BR /&gt; IF DOSE NE . AND DIFF &amp;gt;= 7 THEN FLAG = 'Y';&lt;BR /&gt; ELSE FLAG = 'N';&lt;BR /&gt; OUTPUT HAVE2; &lt;BR /&gt; IF FLAG = 'Y' THEN OUTPUT WANT; &lt;BR /&gt; FORMAT LAG_DT MMDDYY10.;&lt;BR /&gt;RUN;&lt;/P&gt;</description>
    <pubDate>Mon, 04 Apr 2016 17:42:17 GMT</pubDate>
    <dc:creator>Katie</dc:creator>
    <dc:date>2016-04-04T17:42:17Z</dc:date>
    <item>
      <title>data logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261134#M50753</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I have the following data structure and need to create a dataset based on the following , can you please help me&amp;nbsp;to create a variable avalc for the above subjects based on the following condition Value = 'Y' if any two non-missing consecutive date&amp;nbsp;are &amp;gt;=7 days apart&amp;nbsp;&amp;nbsp;when DOSE &amp;gt; 0,&amp;nbsp; &amp;nbsp;othervise 'N'&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;Subj &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXSTDTC &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; DOSE &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;111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-04-01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2015-04-09&lt;/P&gt;
&lt;P&gt;111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-04-15&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;111&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-04-22&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;222&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-04-01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;222&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2015-04-09&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2015-04-01&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;333&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2015-04-09&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;444&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2015-04-10&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;100&lt;/P&gt;
&lt;P&gt;444&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;100&lt;/P&gt;
&lt;P&gt;444 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;2015-04-20&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 100&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in Advance&lt;/P&gt;</description>
      <pubDate>Mon, 04 Apr 2016 17:14:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261134#M50753</guid>
      <dc:creator>Almoha</dc:creator>
      <dc:date>2016-04-04T17:14:57Z</dc:date>
    </item>
    <item>
      <title>Re: data logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261152#M50763</link>
      <description>&lt;P&gt;This isn't the most elegant solution but I believe it gets you what you want. &amp;nbsp;I also assumed that you wanted it BY subject. &amp;nbsp;So that piece is in there as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I also worked around the date (the second HAVE dataset due to my SAS not being able to read the dates you provided).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA Have; &lt;BR /&gt; INPUT SUBJ 1-3 EXSTDTC $5-14 DOSE 16-18; &lt;BR /&gt; DATALINES; &lt;BR /&gt;111 2015-04-01 100&lt;BR /&gt;111 2015-04-09&lt;BR /&gt;111 2015-04-15 100&lt;BR /&gt;111 2015-04-22 100&lt;BR /&gt;222 2015-04-01 100&lt;BR /&gt;222 2015-04-09 100&lt;BR /&gt;333 2015-04-01 100&lt;BR /&gt;333 2015-04-09&lt;BR /&gt;444 2015-04-10 100&lt;BR /&gt;444 100&lt;BR /&gt;444 2015-04-20 100&lt;BR /&gt;; &lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA HAVE; &lt;BR /&gt; SET HAVE (RENAME = (EXSTDTC = EXSTDTC_OLD)); &lt;BR /&gt; YEAR = SUBSTR(EXSTDTC_OLD,1,4); &lt;BR /&gt; MONTH = SUBSTR(EXSTDTC_OLD,6,2);&lt;BR /&gt; DAY = SUBSTR(EXSTDTC_OLD,9,2);&lt;BR /&gt; EXSTDTC = MDY(MONTH,DAY,YEAR);&lt;BR /&gt; FORMAT EXSTDTC MMDDYY10.;&lt;BR /&gt; DROP YEAR MONTH DAY EXSTDTC_OLD;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;PROC SORT DATA = HAVE; &lt;BR /&gt; BY SUBJ;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA HAVE2 WANT; &lt;BR /&gt; SET HAVE; &lt;BR /&gt; BY SUBJ;&lt;BR /&gt; LAG_DT = LAG(EXSTDTC);&lt;BR /&gt; IF FIRST.SUBJ THEN LAG_DT = .; &lt;BR /&gt; DIFF = EXSTDTC- LAG_DT; &lt;BR /&gt; IF DOSE NE . AND DIFF &amp;gt;= 7 THEN FLAG = 'Y';&lt;BR /&gt; ELSE FLAG = 'N';&lt;BR /&gt; OUTPUT HAVE2; &lt;BR /&gt; IF FLAG = 'Y' THEN OUTPUT WANT; &lt;BR /&gt; FORMAT LAG_DT MMDDYY10.;&lt;BR /&gt;RUN;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Apr 2016 17:42:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261152#M50763</guid>
      <dc:creator>Katie</dc:creator>
      <dc:date>2016-04-04T17:42:17Z</dc:date>
    </item>
    <item>
      <title>Re: data logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261269#M50804</link>
      <description>&lt;PRE&gt;
What output do you want ?



DATA Have; 
INPUT SUBJ 1-3 EXSTDTC : yymmdd10. DOSE 16-18; 
format EXSTDTC  yymmdd10. ;
DATALINES; 
111 2015-04-01 100
111 2015-04-09
111 2015-04-15 100
111 2015-04-22 100
222 2015-04-01 100
222 2015-04-09 100
333 2015-04-01 100
333 2015-04-09
444 2015-04-10 100
444 100
444 2015-04-20 100
; 
RUN;
data want;
 set have;
 if SUBJ = lag(SUBJ) and dif(EXSTDTC) ge 7 and DOSE gt 0 then avalc ='Y';
  else avalc ='N';
 run;



&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Apr 2016 03:10:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261269#M50804</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-04-05T03:10:00Z</dc:date>
    </item>
    <item>
      <title>Re: data logic</title>
      <link>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261281#M50808</link>
      <description>&lt;P&gt;How about this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards dsd dlm=' ' missover;
input subj exstdtc:yymmdd10. dose;
format exstdtc yymmdd10.;
cards;
111 2015-04-01 100
111 2015-04-09
111 2015-04-15 100
111 2015-04-22 100
222 2015-04-01 100
222 2015-04-09 100
333 2015-04-01 100
333 2015-04-09
444 2015-04-10 100
444  100
444 2015-04-20 100
;
run;

proc sort
  data=have (where=(exstdtc ne . and dose &amp;gt; 0))
  out=int
;
by subj exstdtc;
run;

data want;
set int;
by subj;
if not first.subj and intck('days',lag(exstdtc),exstdtc) &amp;gt; 7
then avalc = 'Y';
else avalc = 'N';
run;

proc print;
run;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;                                             Obs    subj       exstdtc    dose    avalc

                                              1      111    2015-04-01     100      N  
                                              2      111    2015-04-15     100      Y  
                                              3      111    2015-04-22     100      N  
                                              4      222    2015-04-01     100      N  
                                              5      222    2015-04-09     100      Y  
                                              6      333    2015-04-01     100      N  
                                              7      444    2015-04-10     100      N  
                                              8      444    2015-04-20     100      Y  
&lt;/PRE&gt;</description>
      <pubDate>Tue, 05 Apr 2016 06:28:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/data-logic/m-p/261281#M50808</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2016-04-05T06:28:27Z</dc:date>
    </item>
  </channel>
</rss>

