<?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 using LET statement in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55475#M15455</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thank you all for sharing your expertise.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the specific dates are different for each individual (e.g.., date joined).&lt;/P&gt;&lt;P&gt;I have three specific dates for each individual. So... perhaps I need to create many variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Initially, by X, Y, Z, I didn't mean indicator variables but real values (e.g, dollar_spent)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 26 Aug 2011 17:41:00 GMT</pubDate>
    <dc:creator>jkf91</dc:creator>
    <dc:date>2011-08-26T17:41:00Z</dc:date>
    <item>
      <title>using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55470#M15450</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I have a large scanner panel data set, which tracks consumptions made by households.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What I'm interested in doing is the following:&lt;/P&gt;&lt;P&gt;I want to (eventually) count the number of purchase observations 3, 6, 12 months before and after specific dates.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I was told that the best way to go about doing this is by creating LET statement.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;However, I have no clue hwo this can be done... Can someone help please?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Currently, the data looks as below:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Household_ID&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Purchase_Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Specific_Date&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Y&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Z&lt;/P&gt;&lt;P&gt;1&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; 11/22/07&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; 3/24/08&lt;/P&gt;&lt;P&gt;1&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; 3/25/08&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; 3/24/08 &lt;/P&gt;&lt;P&gt;1&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; 4/28/08&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; 3/24/08&lt;/P&gt;&lt;P&gt;1&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/30/09&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; 3/24/08&lt;/P&gt;&lt;P&gt;2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;So, for household_id=1, &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;for 3 months interval, i want to have two observations: 3/25/08 4/28/08 &lt;/P&gt;&lt;P&gt;for 6 months interval, i want to have three observations: 11/22/07 3/25/08 4/28/08 &lt;/P&gt;&lt;P&gt;for 12 months interval, i want all observations&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In the end, I need to create additional summary statistics for observations that fall belong to above time intervals. Such as avg(x), avg(y), avg(z)...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;any comments would be greatly appreciated. please let me know if anything is not clear&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 16:30:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55470#M15450</guid>
      <dc:creator>jkf91</dc:creator>
      <dc:date>2011-08-26T16:30:25Z</dc:date>
    </item>
    <item>
      <title>Re: using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55471#M15451</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;If specific_date already exists in your file, and that is the date you are seeing if a particular purchase date falls within x months before or after, then I don't see how creating a macro variable would help.&amp;nbsp; If the field doesn't exist, then you could create the variable before running a datastep, and not take up any file space.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;What you are looking for, I think, is simply the intnx function to create variables x, y and z that will be set to 1 if a purchase_date is within 3, 6 and 12 months of a Specific_Date.&amp;nbsp; You could do that with code like: &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if intnx('month', Purchase_Date, -3, 'S' ) &amp;lt; Specific_Date &amp;lt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intnx('month', Purchase_Date, 3, 'S' ) then x=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if intnx('month', Purchase_Date, -6, 'S' ) &amp;lt; Specific_Date &amp;lt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intnx('month', Purchase_Date, 6, 'S' ) then y=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if intnx('month', Purchase_Date, -12, 'S' ) &amp;lt; Specific_Date &amp;lt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intnx('month', Purchase_Date, 12, 'S' ) then z=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If Specific_Date didn't exist in your file you could create a macro variable .. before your datastep .. something like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;%let Specific_Date=24mar2008;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;&amp;nbsp; set have;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if intnx('month', Purchase_Date, -3, 'S' ) &amp;lt; Specific_Date &amp;lt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intnx('month', Purchase_Date, 3, 'S' ) then x=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if intnx('month', Purchase_Date, -6, 'S' ) &amp;lt; Specific_Date &amp;lt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intnx('month', Purchase_Date, 6, 'S' ) then y=1;&lt;/P&gt;&lt;P&gt;&amp;nbsp; if intnx('month', Purchase_Date, -12, 'S' ) &amp;lt; Specific_Date &amp;lt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; intnx('month', Purchase_Date, 12, 'S' ) then z=1;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 17:17:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55471#M15451</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-08-26T17:17:02Z</dc:date>
    </item>
    <item>
      <title>using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55472#M15452</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I agree with Art - I don't see how a macro variable will help...I cam up with this code example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If I'm understanding correctly, you want to populate x, y, x with a numeric 1 so you can summarize and rollup by household_id&lt;BR /&gt;and then calculate the averages.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My sas is currently busy so I couldn't test but you could do somthing along the lines of this psuedo code.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data dataset2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set dataset1;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; three_month_int=intchk('MONTH3', purchase_date, specific_date);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; six_month_int=intchk('MONTH6', purchase_date, specific_date);&lt;BR /&gt;&amp;nbsp;&amp;nbsp; twelve_month_int=intchk('MONTH12', purchase_date, specific_date);&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if three_month_int=1 then x=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if six_month_int=1 then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; if twelve_month_int=1 then&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; do;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; x=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; y=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; z=1;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql exec;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; create table dataset3 as &lt;BR /&gt;&amp;nbsp;&amp;nbsp; select *,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(x) as sum_x,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(y) as sum_y,&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sum(z) as sum_z&lt;BR /&gt;&amp;nbsp;&amp;nbsp; from dataset2;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; group by household_id&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data dataset4;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; set dataset3;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; by household_id;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if first.household_id;&lt;BR /&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 17:25:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55472#M15452</guid>
      <dc:creator>robby_beum</dc:creator>
      <dc:date>2011-08-26T17:25:50Z</dc:date>
    </item>
    <item>
      <title>using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55473#M15453</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I think this boils down to finding records that fall within some time window and then computing meaningful metrics for them, by household.&lt;/P&gt;&lt;P&gt;This is something the macro %let statement won't even come close to solving on its own.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm hoping the [t1,t2] window is the same for all households, which makes it far easier, and usually would make sense.&amp;nbsp; If so, a reasonable approach might look like,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;1) sort by household_id Purchase_date.&lt;/P&gt;&lt;P&gt;2) use proc sql or data step to: a) select records, and b) compute total purchase counts and dollars.&lt;/P&gt;&lt;P&gt;3) repeat for different [t1,t2] windows, e.g., 3 mth, 6 mth, annual, ...&lt;/P&gt;&lt;P&gt;4) join the separate summarized results together by household if necessary.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Alternatively,&lt;/P&gt;&lt;P&gt;1) sort by household_id Purchase_date.&lt;/P&gt;&lt;P&gt;2) use proc sql or data step to create house_hold monthly totals.&amp;nbsp; Essentially change the data from the "transaction" dataset to a monthly summary dataset.&lt;/P&gt;&lt;P&gt;3) Then you can read the monthly summary dataset (one record for each household, every occuring month), transpose it to a wide time series view (one record for each household, month appear as additional columns).&lt;/P&gt;&lt;P&gt;4) Compute 3,6,12 month statistics using arrays or plain statements from the wide time series view.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;That's all I can think of for now.&amp;nbsp; Hope this helps and good luck!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 17:35:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55473#M15453</guid>
      <dc:creator>DLing</dc:creator>
      <dc:date>2011-08-26T17:35:26Z</dc:date>
    </item>
    <item>
      <title>using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55474#M15454</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Robby,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I presume you meant intck.&amp;nbsp; The reason I suggested the intnx function instead was that the former only counts boundaries .. not months from a particular date.&amp;nbsp; Thus your code would say that anything that happened in April would be 3 months from January, regardless of the actual dates.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 17:38:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55474#M15454</guid>
      <dc:creator>art297</dc:creator>
      <dc:date>2011-08-26T17:38:45Z</dc:date>
    </item>
    <item>
      <title>using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55475#M15455</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;thank you all for sharing your expertise.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;the specific dates are different for each individual (e.g.., date joined).&lt;/P&gt;&lt;P&gt;I have three specific dates for each individual. So... perhaps I need to create many variables.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Initially, by X, Y, Z, I didn't mean indicator variables but real values (e.g, dollar_spent)&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 17:41:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55475#M15455</guid>
      <dc:creator>jkf91</dc:creator>
      <dc:date>2011-08-26T17:41:00Z</dc:date>
    </item>
    <item>
      <title>Re: using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55476#M15456</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ah, you're doing tenure analysis at the household level.&amp;nbsp; Your aggregation code should look something like this:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;proc sort data=purchases;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by houseid joindate purchdate;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; Each house should only have 1 joindate&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;data summarized;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; set purchases;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; by houseid;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days = purchdate - joindate;&lt;/SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&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; presuming these are SAS date values&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; days = intck( 'day', joindate, purchdate );&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; same as above, but amenable to other ways of counting&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; mths = intck( 'month', joindate, purchchdate ); /*&amp;nbsp; careful since it counts month boundaries&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /*&amp;nbsp; or any variant that works according to your sense of what is a month&amp;nbsp; */&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if first.houseid then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt30 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val30 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt60 = 0;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val60 = 0;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... etc&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... cumulative counters &amp;amp; values ...&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dur &amp;lt;= 30 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt30 + 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val30 + amount;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dur &amp;lt;= 60 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt60 + 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val60 + amount;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dur &amp;lt;= 90 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt90 + 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val90 + amount;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... etc&amp;nbsp; Typical problem with this is that it ignores seasonality in the data.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... Sometimes you want tenure view (since joindate), sometimes calendar view (at December of the year).&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ... sometimes people want non-overlapping buckets rather than cumulatives, such as&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if dur &amp;lt;= 30 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt30 + 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val30 + amount;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if dur &amp;lt;= 60 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt60 + 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val60 + amount;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; else if dur &amp;lt;= 90 then do;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; cnt90 + 1;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; val90 + amount;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; end;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if last.houseid then output;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;run;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;These are the sorts of processing of transaction oriented data stream into either tenure/vintage views or calendar date views.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 26 Aug 2011 18:38:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55476#M15456</guid>
      <dc:creator>DLing</dc:creator>
      <dc:date>2011-08-26T18:38:48Z</dc:date>
    </item>
    <item>
      <title>Re: using LET statement</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55477#M15457</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;You do not post the output you want. you said you have three special days for each individual(house_id?),but in your post ,there is only one special day.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Maybe you want to use %let month_interval=3 ,to select 3,6,12 month interval?&lt;/P&gt;&lt;P&gt;So it is hard to code something without seeing your whole data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Ksharp&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 29 Aug 2011 06:51:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/using-LET-statement/m-p/55477#M15457</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2011-08-29T06:51:54Z</dc:date>
    </item>
  </channel>
</rss>

