<?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: How to find if a person satisfies two separate conditions in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496231#M131185</link>
    <description>What about PURCHASEID 61952 ? 01-Aug-2017 is between 08-Aug-2016 and 07-Aug-2017 so shouldn't it be counted as a purchase in the previous twelve months ?</description>
    <pubDate>Mon, 17 Sep 2018 13:24:28 GMT</pubDate>
    <dc:creator>gamotte</dc:creator>
    <dc:date>2018-09-17T13:24:28Z</dc:date>
    <item>
      <title>How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496194#M131165</link>
      <description>&lt;P&gt;Hi! I have a dataset which includes person IDs and one record for each of their transactions, looking something like this:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;UIN&lt;/TD&gt;&lt;TD&gt;PURCHASEID&lt;/TD&gt;&lt;TD&gt;CREATIONDATE&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0045&lt;/TD&gt;&lt;TD&gt;60636&lt;/TD&gt;&lt;TD&gt;11-May-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0073&lt;/TD&gt;&lt;TD&gt;60646&lt;/TD&gt;&lt;TD&gt;13-Aug-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0073&lt;/TD&gt;&lt;TD&gt;63179&lt;/TD&gt;&lt;TD&gt;28-Dec-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0073&lt;/TD&gt;&lt;TD&gt;64001&lt;/TD&gt;&lt;TD&gt;07-Aug-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0084&lt;/TD&gt;&lt;TD&gt;61952&lt;/TD&gt;&lt;TD&gt;01-Aug-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0084&lt;/TD&gt;&lt;TD&gt;60539&lt;/TD&gt;&lt;TD&gt;01-Jun-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0092&lt;/TD&gt;&lt;TD&gt;60686&lt;/TD&gt;&lt;TD&gt;13-May-17&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0092&lt;/TD&gt;&lt;TD&gt;63302&lt;/TD&gt;&lt;TD&gt;28-May-18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0092&lt;/TD&gt;&lt;TD&gt;60465&lt;/TD&gt;&lt;TD&gt;07-Aug-18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to create a code that flags when a person has made a purchase both in this past 12 months, and as well as having made a purchase during the previous 12 months, so that it may look something like this:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;UIN&lt;/TD&gt;&lt;TD&gt;PURCHASEID&lt;/TD&gt;&lt;TD&gt;CREATIONDATE&lt;/TD&gt;&lt;TD&gt;FLAG&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0045&lt;/TD&gt;&lt;TD&gt;60636&lt;/TD&gt;&lt;TD&gt;11-May-17&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0073&lt;/TD&gt;&lt;TD&gt;60646&lt;/TD&gt;&lt;TD&gt;13-Aug-17&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0073&lt;/TD&gt;&lt;TD&gt;63179&lt;/TD&gt;&lt;TD&gt;28-Dec-17&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0073&lt;/TD&gt;&lt;TD&gt;64001&lt;/TD&gt;&lt;TD&gt;07-Aug-18&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0084&lt;/TD&gt;&lt;TD&gt;61952&lt;/TD&gt;&lt;TD&gt;01-Aug-17&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0084&lt;/TD&gt;&lt;TD&gt;60539&lt;/TD&gt;&lt;TD&gt;01-Jun-18&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0092&lt;/TD&gt;&lt;TD&gt;60686&lt;/TD&gt;&lt;TD&gt;13-May-17&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0092&lt;/TD&gt;&lt;TD&gt;63302&lt;/TD&gt;&lt;TD&gt;28-May-18&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ID_0092&lt;/TD&gt;&lt;TD&gt;60465&lt;/TD&gt;&lt;TD&gt;07-Aug-18&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;I'm not sure how exactly to go about this. I tried to use a dataset grouped by UIN (the dataset is already sorted by UIN) but this did not work as each record only has one creationdate. And, this is working from a fixed point in time so would not work for my whole dataset anyway.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data purchases2;
set purchases1;
	by UIN;
		if (creationdate between '08aug2017'd and '07aug2018'd) 
		and (creationdate between '08aug2016'd and '07aug2017'd)
		then flag=1; else flag=0;
run;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This seems quite complex but I'm hoping there's a simple solution!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 11:48:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496194#M131165</guid>
      <dc:creator>deedums</dc:creator>
      <dc:date>2018-09-17T11:48:55Z</dc:date>
    </item>
    <item>
      <title>Re: How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496200#M131167</link>
      <description>&lt;P&gt;I think you need a flag for each condition.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data purchase;
   input UIN $ PURCHASEID $ CREATIONDATE :date9.;
   format CR: date11.;
   cards;
ID_0045 60636 11-May-17 
ID_0073 60646 13-Aug-17 
ID_0073 63179 28-Dec-17 
ID_0073 64001 07-Aug-18 
ID_0084 61952 01-Aug-17 
ID_0084 60539 01-Jun-18 
ID_0092 60686 13-May-17 
ID_0092 63302 28-May-18 
ID_0092 60465 07-Aug-18 
   run;
proc print;
   run;
data who;
   do until(last.uin);
      set purchase;
      by uin;
      if '08aug2017'd le creationdate le '07aug2018'd then flag1=1;
      if '08aug2016'd le creationdate le '07aug2017'd then flag2=1;
		end;
   if flag1 and flag2;
   keep uin;
   run;
proc print;
   run;
      &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Capture.PNG" style="width: 312px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/23305iF6970D5FBBB142B2/image-size/large?v=v2&amp;amp;px=999" role="button" title="Capture.PNG" alt="Capture.PNG" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 12:07:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496200#M131167</guid>
      <dc:creator>data_null__</dc:creator>
      <dc:date>2018-09-17T12:07:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496207#M131170</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Shouldn't the flag also be 1 for ID 84 ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;With proc sql :&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
    CREATE TABLE want AS
    SELECT *,
           CASE WHEN sum(CREATIONDATE BETWEEN '08aug2017'd AND '07aug2018'd)
                 AND sum(CREATIONDATE BETWEEN '08aug2016'd AND '07aug2017'd)
           THEN 1 ELSE 0 END AS FLAG
    FROM have
    GROUP BY UIN    
    ;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Edit : Corrected typo&amp;nbsp; : 07aug2017 instead of 07aug2018 in the second interval. &lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 13:32:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496207#M131170</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2018-09-17T13:32:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496225#M131180</link>
      <description>&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you for your solution! &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;No ID 84 wouldn't be flagged as I would want the flag to show when the UIN has made a purchase in BOTH the past twelve months AND the previous twelve months. ID84 only made purchases in the past 12 months.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 13:44:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496225#M131180</guid>
      <dc:creator>deedums</dc:creator>
      <dc:date>2018-09-17T13:44:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496231#M131185</link>
      <description>What about PURCHASEID 61952 ? 01-Aug-2017 is between 08-Aug-2016 and 07-Aug-2017 so shouldn't it be counted as a purchase in the previous twelve months ?</description>
      <pubDate>Mon, 17 Sep 2018 13:24:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496231#M131185</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2018-09-17T13:24:28Z</dc:date>
    </item>
    <item>
      <title>Re: How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496237#M131188</link>
      <description>&lt;P&gt;Sorry for the confusion, I'd meant the 12 months leading up to the final purchase per ID.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 17 Sep 2018 13:38:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496237#M131188</guid>
      <dc:creator>deedums</dc:creator>
      <dc:date>2018-09-17T13:38:03Z</dc:date>
    </item>
    <item>
      <title>Re: How to find if a person satisfies two separate conditions</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496247#M131191</link>
      <description>&lt;P&gt;OK but why is ID 73 flagged ?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql noprint;
    CREATE TABLE have2 AS
    SELECT *, max(CREATIONDATE) AS FINALPURCHASE format=date9.
    FROM have
    GROUP BY UIN;

    CREATE TABLE want AS
    SELECT *, CREATIONDATE BETWEEN intnx('year',FINALPURCHASE,-1,'s') AND FINALPURCHASE-1 AS LAST_12,
           CREATIONDATE BETWEEN intnx('year',FINALPURCHASE,-2,'s')AND intnx('year',FINALPURCHASE-1,-1,'s') AS PREV_12,
           CASE WHEN sum(CREATIONDATE BETWEEN intnx('year',FINALPURCHASE,-1,'s') AND FINALPURCHASE-1)
                 AND sum(CREATIONDATE BETWEEN intnx('year',FINALPURCHASE,-2,'s')AND intnx('year',FINALPURCHASE-1,-1,'s'))
           THEN 1 ELSE 0 END AS FLAG
    FROM have2
    GROUP BY UIN    
    ;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 17 Sep 2018 14:16:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-find-if-a-person-satisfies-two-separate-conditions/m-p/496247#M131191</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2018-09-17T14:16:20Z</dc:date>
    </item>
  </channel>
</rss>

