<?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: Collapsing observations with update in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689147#M209476</link>
    <description>&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do I need to do the first part with the infile and datalines for the rest to work?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My dataset contains some millions of lines &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried the second part of the code (from data want) and it for some reason deletes some admission dates, and still takes the latest of the readmission dates.&lt;/P&gt;&lt;P&gt;Janet&lt;/P&gt;</description>
    <pubDate>Tue, 06 Oct 2020 11:01:38 GMT</pubDate>
    <dc:creator>JJ_211</dc:creator>
    <dc:date>2020-10-06T11:01:38Z</dc:date>
    <item>
      <title>Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689126#M209470</link>
      <description>&lt;P&gt;Hi!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have a dataset with multiple dates of admission per person. I want to split them into admissions and readmissions (defined as another admission within 90 days of discharge date of the previous admission). I used the lag function to define those then I created a count (M) for each admission and readmission, and it looks like this:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data have:&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; admission date&amp;nbsp; &amp;nbsp; &amp;nbsp; readmission date&amp;nbsp; &amp;nbsp; count (M)&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/2000&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&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; 1/2/2000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/2010&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; 2&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;20/1/2010&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&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; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1/2/2010&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I want to collapse these observations so it looks like this:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Data want:&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; admission date&amp;nbsp; &amp;nbsp; &amp;nbsp; readmission date&amp;nbsp; &amp;nbsp; count (M)&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/2000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/2/2000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/2010&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 20/1/2010&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried doing: data want; update have(obs=0) have; by id M; run;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;That works well, except that it takes the last date per M, so it looks like this:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; admission date&amp;nbsp; &amp;nbsp; &amp;nbsp; readmission date&amp;nbsp; &amp;nbsp; count (M)&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/2000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1/2/2000&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1/1/2010&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;STRONG&gt;&amp;nbsp; 1/2/2010&amp;nbsp; &amp;nbsp;&lt;/STRONG&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note the date bolded in this above dataset is the &lt;STRONG&gt;latest&lt;/STRONG&gt; of the two dates that followed the admission date on 1/1/2010, and I want it to take the &lt;STRONG&gt;earliest&lt;/STRONG&gt; (want 20/1/2010 and NOT 1/2/2010). Is there a way to do that?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many thanks in advance!&amp;nbsp;&lt;/P&gt;&lt;P&gt;Janet&lt;/P&gt;</description>
      <pubDate>Tue, 06 Oct 2020 09:38:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689126#M209470</guid>
      <dc:creator>JJ_211</dc:creator>
      <dc:date>2020-10-06T09:38:38Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689140#M209471</link>
      <description>&lt;P&gt;See this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile datalines missover;
input ID (admission_date readmission_date) (:ddmmyy10.) count;
format admission_date readmission_date yymmdd10.;
datalines;
1      1/1/2000                .                               1
1       .                            1/2/2000                  1
1      1/1/2010                 .                              2
1       .                           20/1/2010                 2 
1       .                           1/2/2010                   2
;

data want;
set have;
by id;
retain _ad _re;
if first.id
then do;
  _ad = .;
  _re = .;
end;
_ad = coalesce(_ad,admission_date);
_re = coalesce(_re,readmission_date);
if _ad and _re
then do;
  admission_date = _ad;
  readmission_date = _re;
  output;
  _ad = .;
  _re = .;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 06 Oct 2020 10:37:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689140#M209471</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-10-06T10:37:13Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689145#M209474</link>
      <description>proc sql;&lt;BR /&gt;select id,count,min( admission_date )  as  admission_date,&lt;BR /&gt;          min( readmission_date ) as   readmission_date&lt;BR /&gt;from have&lt;BR /&gt; group by id,count;&lt;BR /&gt;quit;</description>
      <pubDate>Tue, 06 Oct 2020 10:59:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689145#M209474</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2020-10-06T10:59:54Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689147#M209476</link>
      <description>&lt;P&gt;Thank you!&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Do I need to do the first part with the infile and datalines for the rest to work?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My dataset contains some millions of lines &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried the second part of the code (from data want) and it for some reason deletes some admission dates, and still takes the latest of the readmission dates.&lt;/P&gt;&lt;P&gt;Janet&lt;/P&gt;</description>
      <pubDate>Tue, 06 Oct 2020 11:01:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689147#M209476</guid>
      <dc:creator>JJ_211</dc:creator>
      <dc:date>2020-10-06T11:01:38Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689160#M209481</link>
      <description>&lt;P&gt;The DATALINES step is just there to create some example data to work with. By using a data step with DATALINES, it is extremely easy for everybody else to recreate the dataset as is, so that we are all talking about the same thing. All that is needed is copy/paste and submit.&lt;/P&gt;
&lt;P&gt;Please supply example data in the same way and include the cases that don't come out as intended; with the data you posted, my code works, and I can only test code against usable data.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Oct 2020 11:41:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689160#M209481</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-10-06T11:41:50Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689482#M209616</link>
      <description>&lt;P&gt;Hi Ksharp. Many thanks for the sql code! Works as it should (Note to any future user of the code: I added after proc sql; create table want as...), as without this my SAS ran forever and would end up not responding.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Ksharp, a follow up question: If I need further variables to be kept from the original dataset (have), where do I specify that within this code?&amp;nbsp;&lt;/P&gt;&lt;P&gt;I tried adding some variables in "select" but end up with repeated lines (e.g. I also want to keep the discharge date for each admission date, and some other variables). The keep statement doesn't seem to love sql either.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I appreciate your help!&amp;nbsp;&lt;/P&gt;&lt;P&gt;Janet&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2020 09:00:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689482#M209616</guid>
      <dc:creator>JJ_211</dc:creator>
      <dc:date>2020-10-07T09:00:35Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689499#M209620</link>
      <description>Better post some sample data to explain your question.&lt;BR /&gt;If the variables you want added were also GROUP variables ,need include them in GROUP BY clause.&lt;BR /&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;select id,count, xx,&lt;BR /&gt;min( admission_date ) as admission_date,&lt;BR /&gt;min( readmission_date ) as readmission_date&lt;BR /&gt;from have&lt;BR /&gt;group by id,count , xx ;&lt;BR /&gt;quit;</description>
      <pubDate>Wed, 07 Oct 2020 11:11:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689499#M209620</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2020-10-07T11:11:13Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689505#M209625</link>
      <description>&lt;P&gt;Here a sample:&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;HAVE data:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Id&amp;nbsp; &amp;nbsp;count&amp;nbsp; &amp;nbsp; &amp;nbsp;sex&amp;nbsp; &amp;nbsp;admission&amp;nbsp; &amp;nbsp; discharge&amp;nbsp; &amp;nbsp; readmission&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; M&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1/1/03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;15/1/03&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; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; M&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;15/3/03&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;After suggested proc sql, I want to also include the discharge date and sex (examples, there are many other variables like death date etc). If I include sex and discharge date in the GROUP BY clause, I end up getting the same as data HAVE.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;WANT data:&amp;nbsp;&lt;/P&gt;&lt;P&gt;Id&amp;nbsp; &amp;nbsp;count&amp;nbsp; &amp;nbsp; &amp;nbsp;sex&amp;nbsp; &amp;nbsp;admission&amp;nbsp; &amp;nbsp; discharge&amp;nbsp; &amp;nbsp; readmission&lt;/P&gt;&lt;P&gt;1&amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; M&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1/1/03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;15/1/03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;15/3/03&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;THANKS &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2020 11:38:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689505#M209625</guid>
      <dc:creator>JJ_211</dc:creator>
      <dc:date>2020-10-07T11:38:37Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689506#M209626</link>
      <description>&lt;P&gt;Use a summary function for discharge also:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Id $ count sex $ (admission discharge readmission) (:ddmmyy10.);
format admission discharge readmission ddmmyy10.;
datalines;
1      1          M         1/1/03         15/1/03           . 
1      1          M          .                   .                   15/3/03
;

proc sql;
create table want as
  select
    id,
    count,
    sex,
    min(admission) as admission format=ddmmyy10.,
    min(discharge) as discharge format=ddmmyy10.,
    min(readmission) as readmission format=ddmmyy10.
  from have
  group by id, count, sex
;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Oct 2020 11:45:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689506#M209626</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-10-07T11:45:37Z</dc:date>
    </item>
    <item>
      <title>Re: Collapsing observations with update</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689510#M209629</link>
      <description>&lt;P&gt;of course! That does work &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; Many, many thanks!&lt;/P&gt;</description>
      <pubDate>Wed, 07 Oct 2020 11:56:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Collapsing-observations-with-update/m-p/689510#M209629</guid>
      <dc:creator>JJ_211</dc:creator>
      <dc:date>2020-10-07T11:56:47Z</dc:date>
    </item>
  </channel>
</rss>

