<?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 How to loop through ID numbers and calculate number of days between two dates? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445872#M283148</link>
    <description>&lt;P&gt;I have ID numbers with the date of purchase:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID Number&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Purchase Date and Time&lt;/P&gt;&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01OCT2008:10:00:13&lt;/P&gt;&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;09SEP2009:16:00:23&lt;/P&gt;&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;14MAY2012:10:00:27&lt;/P&gt;&lt;P&gt;567&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;07JAN2009:16:00:20&lt;/P&gt;&lt;P&gt;789&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;789&lt;/P&gt;&lt;P&gt;234&lt;/P&gt;&lt;P&gt;234&lt;/P&gt;&lt;P&gt;234&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And so on and so forth. I want to loop through the purchase date and time by ID numbers and count the number of days between the purchase date. So basically I want to ask " How many days ago did the same person make that purchase. So I want a count of days between first record and second, then the second and third for each ID number.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code isn't that great now,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA COUNTS1;&lt;BR /&gt;SET SUMMARY; BY ID_NUMBER;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;FIRST_DATE= DATEPART(FIRST.PURCHASE_DATE);&lt;BR /&gt;END_DATE = DATEPART(LAST.PURCHASE_DATE);&lt;BR /&gt;DO I= FIRST_DATE TO END_DATE;&lt;BR /&gt;DAYS= INTCK('DAYS',FIRST_DATE,END_DATE);&lt;BR /&gt;OUTPUT;&lt;BR /&gt;END;&lt;BR /&gt;PUT DAYS;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;New to SAS, so please help me out.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Thu, 15 Mar 2018 15:47:48 GMT</pubDate>
    <dc:creator>rokuface</dc:creator>
    <dc:date>2018-03-15T15:47:48Z</dc:date>
    <item>
      <title>How to loop through ID numbers and calculate number of days between two dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445872#M283148</link>
      <description>&lt;P&gt;I have ID numbers with the date of purchase:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID Number&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Purchase Date and Time&lt;/P&gt;&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01OCT2008:10:00:13&lt;/P&gt;&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;09SEP2009:16:00:23&lt;/P&gt;&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;14MAY2012:10:00:27&lt;/P&gt;&lt;P&gt;567&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;07JAN2009:16:00:20&lt;/P&gt;&lt;P&gt;789&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;789&lt;/P&gt;&lt;P&gt;234&lt;/P&gt;&lt;P&gt;234&lt;/P&gt;&lt;P&gt;234&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;And so on and so forth. I want to loop through the purchase date and time by ID numbers and count the number of days between the purchase date. So basically I want to ask " How many days ago did the same person make that purchase. So I want a count of days between first record and second, then the second and third for each ID number.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My code isn't that great now,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DATA COUNTS1;&lt;BR /&gt;SET SUMMARY; BY ID_NUMBER;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;FIRST_DATE= DATEPART(FIRST.PURCHASE_DATE);&lt;BR /&gt;END_DATE = DATEPART(LAST.PURCHASE_DATE);&lt;BR /&gt;DO I= FIRST_DATE TO END_DATE;&lt;BR /&gt;DAYS= INTCK('DAYS',FIRST_DATE,END_DATE);&lt;BR /&gt;OUTPUT;&lt;BR /&gt;END;&lt;BR /&gt;PUT DAYS;&lt;BR /&gt;RUN;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;New to SAS, so please help me out.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Mar 2018 15:47:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445872#M283148</guid>
      <dc:creator>rokuface</dc:creator>
      <dc:date>2018-03-15T15:47:48Z</dc:date>
    </item>
    <item>
      <title>Re: How to loop through ID numbers and calculate number of days between two dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445875#M283149</link>
      <description>&lt;P&gt;No loops per se.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SAS loops through data line by line so you don't need any loops. It also allows you to identify the first record of a group using BY and FIRST.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;DATA COUNTS1;
SET SUMMARY; 

BY ID_NUMBER;

*Method 1 - use DIF() function + math;

Duration1 = DIF(purchase_date) / (60*60*24); *this will produce the difference in seconds + do some math to get days;

*Method 2 - use LAG() and INTNX approach;
Prev_Date = lag(purchase_date);
Duration2 = intnx('dtday', purchase_date, prev_date);

if first.ID then call missing(duration1, duration2); 

RUN;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;There are many other ways to do this as well.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/190869"&gt;@rokuface&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;I have ID numbers with the date of purchase:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;ID Number&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Purchase Date and Time&lt;/P&gt;
&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01OCT2008:10:00:13&lt;/P&gt;
&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;09SEP2009:16:00:23&lt;/P&gt;
&lt;P&gt;1234&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;14MAY2012:10:00:27&lt;/P&gt;
&lt;P&gt;567&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;07JAN2009:16:00:20&lt;/P&gt;
&lt;P&gt;789&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;789&lt;/P&gt;
&lt;P&gt;234&lt;/P&gt;
&lt;P&gt;234&lt;/P&gt;
&lt;P&gt;234&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And so on and so forth. I want to loop through the purchase date and time by ID numbers and count the number of days between the purchase date. So basically I want to ask " How many days ago did the same person make that purchase. So I want a count of days between first record and second, then the second and third for each ID number.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;My code isn't that great now,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;DATA COUNTS1;&lt;BR /&gt;SET SUMMARY; BY ID_NUMBER;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;FIRST_DATE= DATEPART(FIRST.PURCHASE_DATE);&lt;BR /&gt;END_DATE = DATEPART(LAST.PURCHASE_DATE);&lt;BR /&gt;DO I= FIRST_DATE TO END_DATE;&lt;BR /&gt;DAYS= INTCK('DAYS',FIRST_DATE,END_DATE);&lt;BR /&gt;OUTPUT;&lt;BR /&gt;END;&lt;BR /&gt;PUT DAYS;&lt;BR /&gt;RUN;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;New to SAS, so please help me out.&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Mar 2018 15:53:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445875#M283149</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-03-15T15:53:31Z</dc:date>
    </item>
    <item>
      <title>Re: How to loop through ID numbers and calculate number of days between two dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445882#M283150</link>
      <description>&lt;P&gt;Yeah however, it looks like it's not giving me the right solution, days don't look right.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I got:&amp;nbsp;&lt;/P&gt;&lt;P&gt;data counts1;&lt;/P&gt;&lt;P&gt;set summary;&lt;/P&gt;&lt;P&gt;by Id_number;&lt;/P&gt;&lt;P&gt;keep days;&lt;/P&gt;&lt;P&gt;purchase= datepart(purchase_date);&lt;/P&gt;&lt;P&gt;prev_date= lag(purchase);&lt;/P&gt;&lt;P&gt;days= intnx=('dtday', purchase, prev_date);&lt;/P&gt;&lt;P&gt;put days;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Giving me weird numbers though&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Mar 2018 16:04:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445882#M283150</guid>
      <dc:creator>rokuface</dc:creator>
      <dc:date>2018-03-15T16:04:09Z</dc:date>
    </item>
    <item>
      <title>Re: How to loop through ID numbers and calculate number of days between two dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445894#M283151</link>
      <description>&lt;P&gt;I don't think &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza&lt;/a&gt;'s solutions intended to use DATEPART.&amp;nbsp; It still can be solved in that way, however.&amp;nbsp; Making small adjustments to your latest program:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data counts1;&lt;/P&gt;
&lt;P&gt;set summary;&lt;/P&gt;
&lt;P&gt;by Id_number;&lt;/P&gt;
&lt;P&gt;purchase= datepart(purchase_date);&lt;/P&gt;
&lt;P&gt;days = dif(purchase);&lt;/P&gt;
&lt;P&gt;if first.id_number then days=.;&lt;/P&gt;
&lt;P&gt;put days;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Thu, 15 Mar 2018 16:32:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445894#M283151</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-03-15T16:32:13Z</dc:date>
    </item>
    <item>
      <title>Re: How to loop through ID numbers and calculate number of days between two dates?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445903#M283152</link>
      <description>&lt;P&gt;Please look up the INTNX function. The first parameter is the interval you're looking for, ie day, months, weeks or some variation.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Since you had datetimes I specified DTDAY which is date time days.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have dates you would instead specify DAY.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/190869"&gt;@rokuface&lt;/a&gt; wrote:&lt;BR /&gt;
&lt;P&gt;Yeah however, it looks like it's not giving me the right solution, days don't look right.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I got:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data counts1;&lt;/P&gt;
&lt;P&gt;set summary;&lt;/P&gt;
&lt;P&gt;by Id_number;&lt;/P&gt;
&lt;P&gt;keep days;&lt;/P&gt;
&lt;P&gt;purchase= datepart(purchase_date);&lt;/P&gt;
&lt;P&gt;prev_date= lag(purchase);&lt;/P&gt;
&lt;P&gt;days= intnx=('dtday', purchase, prev_date);&lt;/P&gt;
&lt;P&gt;put days;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Giving me weird numbers though&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/BLOCKQUOTE&gt;</description>
      <pubDate>Thu, 15 Mar 2018 17:06:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-loop-through-ID-numbers-and-calculate-number-of-days/m-p/445903#M283152</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2018-03-15T17:06:29Z</dc:date>
    </item>
  </channel>
</rss>

