<?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: Bring in a value from one dataset into another based on date match (multiple times at once) in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782502#M249459</link>
    <description>&lt;P&gt;That worked! THANK YOU SO MUCH!&lt;/P&gt;</description>
    <pubDate>Fri, 26 Nov 2021 04:55:27 GMT</pubDate>
    <dc:creator>dmwilliams</dc:creator>
    <dc:date>2021-11-26T04:55:27Z</dc:date>
    <item>
      <title>Bring in a value from one dataset into another based on date match (multiple times at once)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782499#M249457</link>
      <description>&lt;P&gt;I have two datasets formatted as so:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Dataset1&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Day1&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; Day2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Day3&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; Day4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Day5&amp;nbsp;&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10/12/2013&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 10/11/2013&amp;nbsp; 10/10/2013&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 10/09/2013&amp;nbsp; &amp;nbsp; &amp;nbsp;10/08/2013&lt;/P&gt;&lt;P&gt;2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11/09/2013&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 11/08/2013&amp;nbsp; 11/07/2013&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;11/06/2013&amp;nbsp; &amp;nbsp; &amp;nbsp;11/05/2013&lt;/P&gt;&lt;P&gt;…&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Dataset2Dates, Matching, Multiple Datasets&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;Date&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; Value&lt;/P&gt;&lt;P&gt;10/07/2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;10/08/2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10&lt;/P&gt;&lt;P&gt;10/09/2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&lt;/P&gt;&lt;P&gt;10/10/2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 7&lt;/P&gt;&lt;P&gt;….&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Both are very large datasets (thousands of records). I would like to match by date between the datasets (Day1 and Date, Day2 and Date, etc.) and bring the &lt;EM&gt;Value&lt;/EM&gt; associated with the matched date in Dataset2 into Dataset1 for that ID (or create a new dataset with Dataset1 info with the new values for each date). I would like to do that for each ID in Dataset 1 for Day1-Day5. Ultimately, resulting in something like this for all IDs and their associated Days in order to bring the values associated with that date into the dataset with the IDs:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;DatasetX?&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Day1&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; Day1Value&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Day2&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; Day2Value&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; …&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10/12/2013&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 5&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;10/11/2013&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3&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; …&lt;/P&gt;&lt;P&gt;2 &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 11/09/2013&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; 8&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/08/2013&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 20&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; ….&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've experimented with bringing the second dataset into the first and making dummy variables, but it won't work as of yet. Example:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;data work.test1;&lt;BR /&gt;set work.test;&lt;BR /&gt;format Day1 MMDDYY10. Date MMDDYY10. Day2 MMDDYY10.;&lt;BR /&gt;if Day1=Date then DAY1Value=Value;&lt;BR /&gt;if Day2=Date then DAY2Value=Value;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I've experimented with proc sql as well, but only successful one date at a time (with such large data this isn't feasible),&amp;nbsp;whereas I need to do this for multiple dates at once to bring multiple values over based on those dates. Example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;proc sql;&lt;BR /&gt;create table test3 as&lt;BR /&gt;select *&lt;BR /&gt;from Dataset1, Dataset2&lt;BR /&gt;where Day1=Date&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have yet to try do loops, but not sure how to put that together.&amp;nbsp; Any help is GREATLY appreciated. Thank you! Note, I am using SAS 9.4.&lt;/P&gt;</description>
      <pubDate>Fri, 26 Nov 2021 02:50:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782499#M249457</guid>
      <dc:creator>dmwilliams</dc:creator>
      <dc:date>2021-11-26T02:50:27Z</dc:date>
    </item>
    <item>
      <title>Re: Bring in a value from one dataset into another based on date match (multiple times at once)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782501#M249458</link>
      <description>&lt;P&gt;It would be a lot easier if you just had one date per observation in the first dataset.&amp;nbsp; You could use PROC TRANSPOSE to fix that.&amp;nbsp; Then just just need to merge the two dataset by DATE.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;But you might be able to just make a format from the second table&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data format;
  fmtname='day_value';
  set two;
  rename date=start value=label;
run;
proc format cntlin=format ;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;and use it to convert.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set one;
  array day [5];
  array value [5];
  do index=1 to dim(day);
    value[index]=input(put(day[index],day_value.),??32.);
  end;
  drop index;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;id        day1       day2       day3       day4       day5 value1 value2 value3 value4 value5

  1  2013-10-12 2013-10-11 2013-10-10 2013-10-09 2013-10-08    .      .      7      3     10
  2  2013-11-09 2013-11-08 2013-11-07 2013-11-06 2013-11-05    .      .      .      .      .&lt;/PRE&gt;</description>
      <pubDate>Fri, 26 Nov 2021 04:05:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782501#M249458</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2021-11-26T04:05:09Z</dc:date>
    </item>
    <item>
      <title>Re: Bring in a value from one dataset into another based on date match (multiple times at once)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782502#M249459</link>
      <description>&lt;P&gt;That worked! THANK YOU SO MUCH!&lt;/P&gt;</description>
      <pubDate>Fri, 26 Nov 2021 04:55:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782502#M249459</guid>
      <dc:creator>dmwilliams</dc:creator>
      <dc:date>2021-11-26T04:55:27Z</dc:date>
    </item>
    <item>
      <title>Re: Bring in a value from one dataset into another based on date match (multiple times at once)</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782503#M249460</link>
      <description>&lt;P&gt;I have created testing code as per your requirement. Please find the below testing code.&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Data test1;&lt;BR /&gt;input id day1 :mmddyy10. day2 :mmddyy10. day3 :mmddyy10. day4 :mmddyy10. day5 :mmddyy10. ;&lt;BR /&gt;format day1 day2 day3 day4 day5 mmddyy10. ;&lt;BR /&gt;datalines ;&lt;BR /&gt;1 10/12/2013 10/11/2013 10/10/2013 10/09/2013 10/08/2013&lt;BR /&gt;2 11/09/2013 11/08/2013 11/07/2013 11/06/2013 11/05/2013&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=test1;&lt;BR /&gt;by id;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc transpose data=test1 out=test1_t;&lt;BR /&gt;by id;&lt;BR /&gt;var day1 day2 day3 day4 day5;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;Data test1_t(drop=col1);&lt;BR /&gt;set test1_t;&lt;BR /&gt;date_n=col1;&lt;BR /&gt;day_d=_name_;&lt;BR /&gt;format date_n date9. ;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=test1_t;&lt;BR /&gt;by date_n;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;Data test2;&lt;BR /&gt;input x date :mmddyy10. value ;&lt;BR /&gt;format date mmddyy10. ;&lt;BR /&gt;datalines ;&lt;BR /&gt;1 10/07/2013 5&lt;BR /&gt;1 10/08/2013 10&lt;BR /&gt;1 10/09/2013 3&lt;BR /&gt;1 10/10/2013 7&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;Data test2_(drop=x date );&lt;BR /&gt;set test2;&lt;BR /&gt;date_n=date;&lt;BR /&gt;format date_n date9. ;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=test2_;&lt;BR /&gt;by date_n;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;Data test_fin;&lt;BR /&gt;merge test1_t(in=a) test2_(in=b);&lt;BR /&gt;by date_n;&lt;BR /&gt;if a;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;Proc sort data=test_fin;&lt;BR /&gt;by id;&lt;BR /&gt;run;&lt;BR /&gt;*** Transpose the dataset and cretae dataset for date ***;&lt;BR /&gt;proc transpose data=test_fin out=test_fint1(drop=_name_);&lt;BR /&gt;by id;&lt;BR /&gt;var date_n;&lt;BR /&gt;id day_d;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;*** Transpose the dataset and cretae dataset for value ***;&lt;BR /&gt;proc transpose data=test_fin out=test_fint2(drop=_name_) suffix=val;&lt;BR /&gt;by id;&lt;BR /&gt;var value;&lt;BR /&gt;id day_d;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;*** Merge Date and value datasets ******;&lt;BR /&gt;Data test_all;&lt;BR /&gt;merge test_fint1(in=a) test_fint2(in=b);&lt;BR /&gt;by id;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Fri, 26 Nov 2021 05:12:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Bring-in-a-value-from-one-dataset-into-another-based-on-date/m-p/782503#M249460</guid>
      <dc:creator>amitmalaviya</dc:creator>
      <dc:date>2021-11-26T05:12:20Z</dc:date>
    </item>
  </channel>
</rss>

