<?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: Macro with to do loop - index date interval time in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727249#M226147</link>
    <description>&lt;P&gt;No macro needed. You can do this in a data step (if I am understanding you properly)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* UNTESTED CODE */
data want;
    set have;
    index_date=index_date-30;
    output;
    index_date=index_date+60;
    output;
    format index_date mmddyy10.;
run;
proc print data=want;
run;
    &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you want tested code, please provide data in &lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;this format&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If that's not what you want, explain further and include examples of the desired output.&lt;/P&gt;</description>
    <pubDate>Wed, 17 Mar 2021 21:06:09 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2021-03-17T21:06:09Z</dc:date>
    <item>
      <title>Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727240#M226141</link>
      <description>&lt;P&gt;Dear SAS users,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I need your help!&amp;nbsp; I would have to do a macro do loop and print the indext_date and an interval for each index time for each patient (-30 days and +30 days).&lt;/P&gt;&lt;P&gt;The patients in this table are unique and there is only one encounter per patient.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Based on this I will have to match to controls using another macro.&amp;nbsp;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can you please provide me with a code for the macro with do loops?&lt;/P&gt;&lt;P&gt;Here is an example of the table:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Encounter_id&lt;/TD&gt;&lt;TD&gt;hospital_id&lt;/TD&gt;&lt;TD&gt;Age&lt;/TD&gt;&lt;TD&gt;patient_id&lt;/TD&gt;&lt;TD&gt;gender&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;INDEX_date&lt;/TD&gt;&lt;TD&gt;Diabetes_event&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2175&lt;/TD&gt;&lt;TD&gt;66&lt;/TD&gt;&lt;TD&gt;55&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;14611&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4271&lt;/TD&gt;&lt;TD&gt;66&lt;/TD&gt;&lt;TD&gt;57&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;14619&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2016&lt;/TD&gt;&lt;TD&gt;19&lt;/TD&gt;&lt;TD&gt;54&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;14620&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2815&lt;/TD&gt;&lt;TD&gt;19&lt;/TD&gt;&lt;TD&gt;35&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;14621&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;5546&lt;/TD&gt;&lt;TD&gt;66&lt;/TD&gt;&lt;TD&gt;60&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;M&lt;/TD&gt;&lt;TD&gt;14629&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;4456&lt;/TD&gt;&lt;TD&gt;20&lt;/TD&gt;&lt;TD&gt;62&lt;/TD&gt;&lt;TD&gt;6&lt;/TD&gt;&lt;TD&gt;F&lt;/TD&gt;&lt;TD&gt;14644&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;Thanks a lot!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 20:43:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727240#M226141</guid>
      <dc:creator>Schtroumpfette</dc:creator>
      <dc:date>2021-03-17T20:43:05Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727248#M226146</link>
      <description>&lt;P&gt;I don't know that you need a macro. It would definitely help if you could explain what you're doing with a small data example. For starters, I don't think you need to do this to merge/join your data, you can do this type of join directly in SQL in the join clause.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I can see at least two interpretations of your question, one is to show the interval start and end and the other is to create an entry for each date in that interval. Both are shown below.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;

*figure out start/end of each interval;
interval_start = index_date - 30;
interval_end = index_date + 30;

*if you want a record for every date;
do date = interval_start to interval_end;
    output;
end;

run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/368646"&gt;@Schtroumpfette&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Dear SAS users,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need your help!&amp;nbsp; I would have to do a macro do loop and print the indext_date and an interval for each index time for each patient (-30 days and +30 days).&lt;/P&gt;
&lt;P&gt;The patients in this table are unique and there is only one encounter per patient.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Based on this I will have to match to controls using another macro.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you please provide me with a code for the macro with do loops?&lt;/P&gt;
&lt;P&gt;Here is an example of the table:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD&gt;Encounter_id&lt;/TD&gt;
&lt;TD&gt;hospital_id&lt;/TD&gt;
&lt;TD&gt;Age&lt;/TD&gt;
&lt;TD&gt;patient_id&lt;/TD&gt;
&lt;TD&gt;gender&amp;nbsp;&lt;/TD&gt;
&lt;TD&gt;INDEX_date&lt;/TD&gt;
&lt;TD&gt;Diabetes_event&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2175&lt;/TD&gt;
&lt;TD&gt;66&lt;/TD&gt;
&lt;TD&gt;55&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;F&lt;/TD&gt;
&lt;TD&gt;14611&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4271&lt;/TD&gt;
&lt;TD&gt;66&lt;/TD&gt;
&lt;TD&gt;57&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;F&lt;/TD&gt;
&lt;TD&gt;14619&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2016&lt;/TD&gt;
&lt;TD&gt;19&lt;/TD&gt;
&lt;TD&gt;54&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;M&lt;/TD&gt;
&lt;TD&gt;14620&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2815&lt;/TD&gt;
&lt;TD&gt;19&lt;/TD&gt;
&lt;TD&gt;35&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;M&lt;/TD&gt;
&lt;TD&gt;14621&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;5546&lt;/TD&gt;
&lt;TD&gt;66&lt;/TD&gt;
&lt;TD&gt;60&lt;/TD&gt;
&lt;TD&gt;5&lt;/TD&gt;
&lt;TD&gt;M&lt;/TD&gt;
&lt;TD&gt;14629&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;4456&lt;/TD&gt;
&lt;TD&gt;20&lt;/TD&gt;
&lt;TD&gt;62&lt;/TD&gt;
&lt;TD&gt;6&lt;/TD&gt;
&lt;TD&gt;F&lt;/TD&gt;
&lt;TD&gt;14644&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;Thanks a lot!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 21:06:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727248#M226146</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-03-17T21:06:02Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727249#M226147</link>
      <description>&lt;P&gt;No macro needed. You can do this in a data step (if I am understanding you properly)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;/* UNTESTED CODE */
data want;
    set have;
    index_date=index_date-30;
    output;
    index_date=index_date+60;
    output;
    format index_date mmddyy10.;
run;
proc print data=want;
run;
    &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;If you want tested code, please provide data in &lt;A href="https://blogs.sas.com/content/sastraining/2016/03/11/jedi-sas-tricks-data-to-data-step-macro/" target="_self"&gt;this format&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If that's not what you want, explain further and include examples of the desired output.&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 21:06:09 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727249#M226147</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-03-17T21:06:09Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727251#M226149</link>
      <description>Three different interpretations of your question so far &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;</description>
      <pubDate>Wed, 17 Mar 2021 21:10:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727251#M226149</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-03-17T21:10:38Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727256#M226154</link>
      <description>&lt;P&gt;Thank you both,&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is helpful.&amp;nbsp; It would be t&lt;SPAN&gt;o show the interval start and end.&amp;nbsp;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The reason I need a macro is that I will need to create a macro to select controls from another dataset (risk set sampling using macro), so I thought I start with a small dataset first.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The dataset here is a small sample of the cases.&amp;nbsp; I will have another dataset for controls, where I need to match on the index date interval, age(+/ 2 years), gender and hospital id.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I can provide&amp;nbsp; an example of the control dataset.&amp;nbsp; Is there a macro code for risk set sampling?&lt;/P&gt;&lt;P&gt;Does this make sense?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Nisrine&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 21:27:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727256#M226154</guid>
      <dc:creator>Schtroumpfette</dc:creator>
      <dc:date>2021-03-17T21:27:11Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727257#M226155</link>
      <description>&lt;P&gt;Thank you, this is helpful.&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 17 Mar 2021 21:27:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727257#M226155</guid>
      <dc:creator>Schtroumpfette</dc:creator>
      <dc:date>2021-03-17T21:27:38Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727284#M226170</link>
      <description>Go read up on PROC PSMATCH or Google CDC "greedy matching macro". No need to reinvent the wheel. &lt;BR /&gt;&lt;BR /&gt;Also, you can do this via SQL. If you really want a macro, first you need base code that works. Do you have that?</description>
      <pubDate>Thu, 18 Mar 2021 01:04:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727284#M226170</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-03-18T01:04:10Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727288#M226172</link>
      <description>&lt;P&gt;Thanks Reeza,&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I don't have a base code but I am working on potentially something based on this:&amp;nbsp;&amp;nbsp;&lt;A href="https://support.sas.com/resources/papers/proceedings/proceedings/sugi30/152-30.pdf" target="_blank"&gt;152-30: SAS® Programs to Select Controls for Matched Case-Control Studies&lt;/A&gt;&lt;/P&gt;&lt;P&gt;It is risk set sampling matching macro for Case Control studies.&amp;nbsp; Have you ever used this?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;We opted out of PS matching.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I hope this helps.&amp;nbsp;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Mar 2021 01:51:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727288#M226172</guid>
      <dc:creator>Schtroumpfette</dc:creator>
      <dc:date>2021-03-18T01:51:28Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727353#M226202</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/368646"&gt;@Schtroumpfette&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The reason I need a macro is that I will need to create a macro to select controls from another dataset (risk set sampling using macro), so I thought I start with a small dataset first.&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;As I understand things, no macro is needed. However, you seem to be avoiding giving us details about what this macro is supposed to do and how it related to the -30 days and +30 days you discussed earlier. Do you want to select controls withing this –30 days and +30 days window? Do you want to select ALL controls for a patient within this time period, or the FIRST control within this time period, or something else? Please explain.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 18 Mar 2021 10:43:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727353#M226202</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-03-18T10:43:27Z</dc:date>
    </item>
    <item>
      <title>Re: Macro with to do loop - index date interval time</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727389#M226222</link>
      <description>Hello Paige,&lt;BR /&gt;&lt;BR /&gt;Yes, correct, I have a dataset with the cases. I will also have a large dataset for controls which includes the cases. I want to select controls within -30 to +30 days window of the index case of the date. It is a large dataset and if I do this step first, it will be very helpful in terms of future processing and this way I am matching also on calendar time. Once I select these controls, I will then match on age+/2 years and gender and hospital_id.&lt;BR /&gt;1. I want to select all controls within this time period&lt;BR /&gt;2. Match on age =/- 2 years, same gender and same hospital id&lt;BR /&gt;3. a control can become a case&lt;BR /&gt;4. A control id is not equal to case id not the same person&lt;BR /&gt;5. There will be an iterative loop that cycles through the first observation to the last observation in the case dataset&lt;BR /&gt;6. keep only four controls in dataset.&lt;BR /&gt;7. append all controls to case dataset.&lt;BR /&gt;&lt;BR /&gt;Does that help?&lt;BR /&gt;Thanks</description>
      <pubDate>Thu, 18 Mar 2021 13:02:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Macro-with-to-do-loop-index-date-interval-time/m-p/727389#M226222</guid>
      <dc:creator>Schtroumpfette</dc:creator>
      <dc:date>2021-03-18T13:02:05Z</dc:date>
    </item>
  </channel>
</rss>

