<?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: Summation with constraints in SAS Data Management</title>
    <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314514#M8988</link>
    <description>&lt;P&gt;Thanks, it's works perfectly now!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Sun, 27 Nov 2016 01:42:22 GMT</pubDate>
    <dc:creator>katja_sas_user</dc:creator>
    <dc:date>2016-11-27T01:42:22Z</dc:date>
    <item>
      <title>Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314440#M8982</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Hi,&lt;/SPAN&gt;&lt;/P&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;I have a dataset that looks like this:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Patient_ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Admission_date&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Comorbidity&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;14/05/2011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;21/04/2011&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;30/06/2011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;23/09/2011&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;22/06/2012&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;25/04/2011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;26/04/2012&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;01/12/2011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;04/12/2011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;29/04/2012&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;30/04/2013&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;It's a large dataset of patients with different admission dates and different recorded&lt;/DIV&gt;&lt;DIV&gt;comorbidity scores. I am interested in the sum (patient level) of their scores for the period of 365 days before admission.&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;If the patient was not admitted before, then the score is 0. If the previous admission is more than 365 days ago, the score is also 0. If there is more than 1 admission in the previous year, it's the sum of the scores.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;In the table above, the results would look like this:&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;STRONG&gt;Patient_ID&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Admission_date&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Comorbidity&lt;/STRONG&gt;&lt;/TD&gt;&lt;TD&gt;&lt;STRONG&gt;Past_Score&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;14/05/2011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;21/04/2011&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;30/06/2011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;23/09/2011&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;C&lt;/TD&gt;&lt;TD&gt;22/06/2012&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;25/04/2011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;D&lt;/TD&gt;&lt;TD&gt;26/04/2011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;01/12/2011&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;04/12/2011&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;29/04/2012&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;E&lt;/TD&gt;&lt;TD&gt;30/04/2013&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/DIV&gt;&lt;DIV&gt;I tried many different approaches (proc means, changing the dataset to wide,...) but&amp;nbsp;&lt;BR /&gt;I am struggling to find a working solution.&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;P&gt;&lt;SPAN&gt;I am using SAS Enterprise Guide, version 7.1&lt;/SPAN&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Any help will be greatly appreciated!&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;DIV&gt;Many thanks.&lt;/DIV&gt;&lt;DIV&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 26 Nov 2016 09:02:12 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314440#M8982</guid>
      <dc:creator>katja_sas_user</dc:creator>
      <dc:date>2016-11-26T09:02:12Z</dc:date>
    </item>
    <item>
      <title>Re: Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314449#M8983</link>
      <description>&lt;P&gt;SQL is a good choice for this type of question.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You join the table to itself, within period of a year.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Untested:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Proc SQL;&lt;/P&gt;
&lt;P&gt;create table want as&lt;/P&gt;
&lt;P&gt;select a.*, sum(b.comorbidity) as scores&lt;/P&gt;
&lt;P&gt;from have as a&lt;/P&gt;
&lt;P&gt;left join have as b&lt;/P&gt;
&lt;P&gt;on b.date between a.date-1 and a.date-365&lt;/P&gt;
&lt;P&gt;group by a.id, a.date, a.comorbidity;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;quit;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 26 Nov 2016 11:11:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314449#M8983</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2016-11-26T11:11:57Z</dc:date>
    </item>
    <item>
      <title>Re: Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314498#M8984</link>
      <description>&lt;P&gt;Using &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;'s code may be also wrap a coalesce() function around the sum() so that you get 0 and not missing for cases where there is no previous admission.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Proc SQL;&lt;BR /&gt;create table want as&lt;BR /&gt;select a.*, coalesce(sum(b.comorbidity),0) as scores&lt;BR /&gt;from have as a&lt;BR /&gt;left join have as b&lt;BR /&gt;on b.date between a.date-1 and a.date-365&lt;BR /&gt;group by a.id, a.date, a.comorbidity; &lt;BR /&gt;quit;&lt;/P&gt;</description>
      <pubDate>Sun, 27 Nov 2016 00:06:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314498#M8984</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2016-11-27T00:06:49Z</dc:date>
    </item>
    <item>
      <title>Re: Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314508#M8985</link>
      <description>&lt;P&gt;Thank you very much&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza﻿&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/12447"&gt;@Patrick﻿&lt;/a&gt;. I really appreciate your help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The code works great, the only problem arises when I keep some other variables in the table - in that case proc sql&amp;nbsp;duplicates some observations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For example:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;input id date ddmmyy8. comorbidity dummy ;&lt;BR /&gt;format date date8.;&lt;BR /&gt;cards;&lt;BR /&gt;1 11072014 1 1&lt;BR /&gt;1 09022016 1 1&lt;BR /&gt;1 17032016 1 1&lt;BR /&gt;1 11012016 1 1&lt;BR /&gt;2 11012016 1 1&lt;BR /&gt;2 08022016 1 1&lt;BR /&gt;3 19012016 1 1&lt;BR /&gt;4 10012016 1 1&lt;/P&gt;&lt;P&gt;;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table want as&lt;BR /&gt;select a.*, coalesce(sum(b.comorbidity),0) as scores&lt;BR /&gt;from have as a&lt;BR /&gt;left join have as b&lt;BR /&gt;on a.id=b.id&lt;/P&gt;&lt;P&gt;and b.date between a.date-1 and a.date-365&lt;BR /&gt;group by a.id, a.date, a.comorbidity;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;In this case proc sql&amp;nbsp;duplicates one observation and I end up with 8 instead of original 9.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;Any idea how I can solve this?&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="login-bold"&gt;Many thanks indeed, I&amp;nbsp;am really grateful!&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 27 Nov 2016 01:22:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314508#M8985</guid>
      <dc:creator>katja_sas_user</dc:creator>
      <dc:date>2016-11-27T01:22:40Z</dc:date>
    </item>
    <item>
      <title>Re: Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314509#M8986</link>
      <description>&lt;P&gt;Sorry, I mean I end up with 9 instead of original 8 observations.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Best,&lt;/P&gt;&lt;P&gt;K.&lt;/P&gt;</description>
      <pubDate>Sun, 27 Nov 2016 01:24:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314509#M8986</guid>
      <dc:creator>katja_sas_user</dc:creator>
      <dc:date>2016-11-27T01:24:14Z</dc:date>
    </item>
    <item>
      <title>Re: Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314513#M8987</link>
      <description>&lt;P&gt;use either a DISTINCT in the select clause or even better add the variable to the Group By clause.&lt;/P&gt;</description>
      <pubDate>Sun, 27 Nov 2016 01:35:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314513#M8987</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2016-11-27T01:35:36Z</dc:date>
    </item>
    <item>
      <title>Re: Summation with constraints</title>
      <link>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314514#M8988</link>
      <description>&lt;P&gt;Thanks, it's works perfectly now!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sun, 27 Nov 2016 01:42:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Data-Management/Summation-with-constraints/m-p/314514#M8988</guid>
      <dc:creator>katja_sas_user</dc:creator>
      <dc:date>2016-11-27T01:42:22Z</dc:date>
    </item>
  </channel>
</rss>

