<?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: Getting previous month's data when condition matches in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463279#M118015</link>
    <description>&lt;P&gt;Well it should resolve to if row comes from table aliased as a, then set to 1 else, set to 2.&amp;nbsp; Maybe the ifn function doesn't like aliases,&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data want;
  set dataset1 (in=a) dataset2 (in=b rename=(intrate=irate));
  if a then ds=1;&lt;BR /&gt;  else ds=2;
run;
proc sort data=want;
  by var_a var_b;
run;
data want;
  if ds=1 then do;
    intrate=lag(irate);
    output;
  end;
run;&lt;/PRE&gt;
&lt;P&gt;Not tested still.&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Fri, 18 May 2018 11:12:34 GMT</pubDate>
    <dc:creator>RW9</dc:creator>
    <dc:date>2018-05-18T11:12:34Z</dc:date>
    <item>
      <title>Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463258#M118007</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Is there any logic to get the previous month's value when a condition matches using two different data sets? Please see below data sets sample.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset1:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Var_A&lt;/TD&gt;&lt;TD&gt;Var_B&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01Feb18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15Mar18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;13Mar18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;21Apr18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;11Jul18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;21Apr18&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;17May18&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dataset2:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Var_A&lt;/TD&gt;&lt;TD&gt;Var_C&lt;/TD&gt;&lt;TD&gt;Int Rate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01Jan18&lt;/TD&gt;&lt;TD&gt;5.20%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01Feb18&lt;/TD&gt;&lt;TD&gt;6.20%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15Dec17&lt;/TD&gt;&lt;TD&gt;1.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15Jan18&lt;/TD&gt;&lt;TD&gt;2.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15Feb18&lt;/TD&gt;&lt;TD&gt;3.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15Mar18&lt;/TD&gt;&lt;TD&gt;4.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;20Mar18&lt;/TD&gt;&lt;TD&gt;5.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;20Apr18&lt;/TD&gt;&lt;TD&gt;6.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;20May18&lt;/TD&gt;&lt;TD&gt;7.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;10Apr18&lt;/TD&gt;&lt;TD&gt;2.60%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;10May18&lt;/TD&gt;&lt;TD&gt;3.60%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;11Jun18&lt;/TD&gt;&lt;TD&gt;8.80%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;11Jul18&lt;/TD&gt;&lt;TD&gt;9.80%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;21Apr18&lt;/TD&gt;&lt;TD&gt;5.70%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;30Oct18&lt;/TD&gt;&lt;TD&gt;4.60%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;30Nov18&lt;/TD&gt;&lt;TD&gt;6.60%&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired Output:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Var_A&lt;/TD&gt;&lt;TD&gt;Var_B&lt;/TD&gt;&lt;TD&gt;Int Rate&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;01Feb18&lt;/TD&gt;&lt;TD&gt;5.20%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;15Mar18&lt;/TD&gt;&lt;TD&gt;3.50%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;13Mar18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;21Apr18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;11Jul18&lt;/TD&gt;&lt;TD&gt;8.80%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;21Apr18&lt;/TD&gt;&lt;TD&gt;5.70%&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;7&lt;/TD&gt;&lt;TD&gt;17May18&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 18 May 2018 09:49:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463258#M118007</guid>
      <dc:creator>Vishy</dc:creator>
      <dc:date>2018-05-18T09:49:27Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463261#M118010</link>
      <description>&lt;P&gt;&lt;U&gt;&lt;STRONG&gt;Post test data in the form of a datastep&lt;/STRONG&gt;&lt;/U&gt;.&amp;nbsp; As such this is untested:&lt;/P&gt;
&lt;PRE&gt;data want;
  set dataset1 (in=a) dataset2 (in=b rename=(intrate=irate));
  ds=ifn(a,1,2);
run;
proc sort data=want;
  by var_a var_b;
run;
data want;
  if ds=1 then do;
    intrate=lag(irate);
    output;
  end;
run;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 May 2018 10:00:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463261#M118010</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-05-18T10:00:42Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463270#M118013</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/45151"&gt;@RW9&lt;/a&gt;,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for looking into this. what is &lt;FONT face="Courier New" size="3"&gt;ds=ifn(a,&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt;,&lt;/FONT&gt;&lt;STRONG&gt;&lt;FONT color="#008080" face="Courier New" size="3"&gt;2&lt;/FONT&gt;&lt;/STRONG&gt;&lt;FONT face="Courier New" size="3"&gt;); below? It's not working.&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 May 2018 10:56:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463270#M118013</guid>
      <dc:creator>Vishy</dc:creator>
      <dc:date>2018-05-18T10:56:23Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463276#M118014</link>
      <description>&lt;P&gt;Why is the case for var_a=6 yielding int_rate=5.70% in you desired dataset?&amp;nbsp; Both dataset1 and datasest2 have only one date (21apr18) for var_a=6.&amp;nbsp; So it has no previous month, which by your specification means resulting int_rate should be missing, no?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Assuming my speculation is correct, then this code produces what you want (edited revision):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dataset1;
  input Var_A	Var_B :date7.;
  format var_b date9.;
datalines;
1	01Feb18
2	15Mar18
3	13Mar18
4	21Apr18
5	11Jul18
6	21Apr18
7	17May18
run;
 
data Dataset2;
  input Var_A	Var_C :date7.	Int_Rate  :percent5.2 ;
  format var_c date9.  int_rate percent7.2 ;
datalines;
1	01Jan18	5.20%
1	01Feb18	6.20%
2	15Dec17	1.50%
2	15Jan18	2.50%
2	15Feb18	3.50%
2	15Mar18	4.50%
3	20Mar18	5.50%
3	20Apr18	6.50%
3	20May18	7.50%
4	10Apr18	2.60%
4	10May18	3.60%
5	11Jun18	8.80%
5	11Jul18	9.80%
6	21Apr18	5.70%
7	30Oct18	4.60%
7	30Nov18	6.60%
run;

data want (keep=var_a var_b int_rate);
  merge dataset1 (in=in1) 
        dataset2 (in=in2 keep=var_a var_c rename=(var_c=var_b));
  by var_a var_b;
  if in2 then do;
     set dataset2 (keep=int_rate);
     int_rate=lag(int_rate);
  end;
  if first.var_a then int_rate=.;
  if in1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This code uses a conditional SET statement with a MERGE statement, which is a good technique for doing LOCF (last observation carried forward) for multiple datasets representing irregular time series.&lt;/P&gt;</description>
      <pubDate>Fri, 18 May 2018 11:25:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463276#M118014</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2018-05-18T11:25:12Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463279#M118015</link>
      <description>&lt;P&gt;Well it should resolve to if row comes from table aliased as a, then set to 1 else, set to 2.&amp;nbsp; Maybe the ifn function doesn't like aliases,&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;data want;
  set dataset1 (in=a) dataset2 (in=b rename=(intrate=irate));
  if a then ds=1;&lt;BR /&gt;  else ds=2;
run;
proc sort data=want;
  by var_a var_b;
run;
data want;
  if ds=1 then do;
    intrate=lag(irate);
    output;
  end;
run;&lt;/PRE&gt;
&lt;P&gt;Not tested still.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 18 May 2018 11:12:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463279#M118015</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2018-05-18T11:12:34Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463285#M118016</link>
      <description>&lt;P&gt;Here is a possible solution:&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;data data1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; input &lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;Var_A / &lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;Var_B date.;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; format Var_B date9.;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;cards;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;01Feb18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;15Mar18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;3&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;13Mar18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;4&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;21Apr18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;5&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;11Jul18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;6&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;21Apr18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;7&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;17May18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;;run;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;　&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;Data data2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; input &lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;Var_A / &lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;Var_C date. / &lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;Int_Rate percent.;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &lt;/FONT&gt;&lt;FONT face="courier new,courier"&gt;format Var_C date9. Int_Rate percent7.2;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;cards;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;01Jan18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;5.20%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;1&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;01Feb18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;6.20%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;15Dec17&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;1.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;15Jan18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;15Feb18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;3.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;15Mar18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;4.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;3&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;20Mar18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;5.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;3&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;20Apr18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;6.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;3&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;20May18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;7.50%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;4&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;10Apr18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;2.60%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;4&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;10May18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;3.60%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;5&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;11Jun18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;8.80%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;5&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;11Jul18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;9.80%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;6&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;21Apr18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;5.70%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;7&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;30Oct18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;4.60%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;7&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;30Nov18&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;6.60%&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;;run;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;　&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;proc sql;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; create index idx on data2(Var_A,Var_C);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;quit;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;data want;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; set data1;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; Var_C=intnx('month',Var_B,-1,'S');&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; set data2 key=idx/unique;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; if _iorc_ then do;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; Int_Rate=.;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; _error_=0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; &amp;nbsp; end;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;&amp;nbsp; drop Var_C;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT face="courier new,courier"&gt;run;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The program gives the same result as you indicated, except for Var_A=6 and Var_B=21APR18, where the data in the second table is not from the previous month, but from the same month (so Int_rate is set missing).&lt;/P&gt;</description>
      <pubDate>Fri, 18 May 2018 11:57:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463285#M118016</guid>
      <dc:creator>s_lassen</dc:creator>
      <dc:date>2018-05-18T11:57:15Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463301#M118020</link>
      <description>&lt;P&gt;Although you got good solution here is another way using Left join with condition.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table want as 
select a.Var_A,a.Var_B,b.Int_Rate
	from dataset1 a
left join dataset2 b
	on (intnx('month',a.Var_B,0,'b')=intnx('month',b.Var_C,1,'b') and a.Var_A=b.Var_A)
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 May 2018 12:45:46 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463301#M118020</guid>
      <dc:creator>SuryaKiran</dc:creator>
      <dc:date>2018-05-18T12:45:46Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463304#M118022</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data dataset1;
infile cards expandtabs;
  input Var_A	Var_B :date7.;
  format var_b date9.;
datalines;
1	01Feb18
2	15Mar18
3	13Mar18
4	21Apr18
5	11Jul18
6	21Apr18
7	17May18
run;
 
data Dataset2;
infile cards expandtabs;
  input Var_A	Var_C :date7.	Int_Rate  :percent5.2 ;
  format var_c date9.  int_rate percent7.2 ;
datalines;
1	01Jan18	5.20%
1	01Feb18	6.20%
2	15Dec17	1.50%
2	15Jan18	2.50%
2	15Feb18	3.50%
2	15Mar18	4.50%
3	20Mar18	5.50%
3	20Apr18	6.50%
3	20May18	7.50%
4	10Apr18	2.60%
4	10May18	3.60%
5	11Jun18	8.80%
5	11Jul18	9.80%
6	21Apr18	5.70%
7	30Oct18	4.60%
7	30Nov18	6.60%
run;
data temp;
 set dataset1;
 var_c=intnx('month',Var_B,-1,'s');
run;
data want;
 merge temp(in=ina) dataset2;
 by  Var_A	Var_C;
 if ina;
run;
proc print noobs;run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 18 May 2018 12:49:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463304#M118022</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-05-18T12:49:09Z</dc:date>
    </item>
    <item>
      <title>Re: Getting previous month's data when condition matches</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463309#M118024</link>
      <description>&lt;P&gt;Thank you all for your inputs.&lt;/P&gt;</description>
      <pubDate>Fri, 18 May 2018 13:04:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Getting-previous-month-s-data-when-condition-matches/m-p/463309#M118024</guid>
      <dc:creator>Vishy</dc:creator>
      <dc:date>2018-05-18T13:04:47Z</dc:date>
    </item>
  </channel>
</rss>

