<?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: Best way to transpose data with duplicate unique identifiers in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936447#M368087</link>
    <description>&lt;P&gt;Since you cannot have two variables with the same name, this is impossible.&lt;/P&gt;</description>
    <pubDate>Fri, 19 Jul 2024 20:51:13 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2024-07-19T20:51:13Z</dc:date>
    <item>
      <title>Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936438#M368084</link>
      <description>&lt;P&gt;I would like to transpose the following dataset so that I can calculate the time difference between the patients first and second hospitalization. How would I do that with duplicate identifiers?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is how my dataset is presently formatted (and some patients may have more than two hospitalizations)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Patient Name&lt;/TD&gt;&lt;TD&gt;Patient ID&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;Test date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Pete Smith&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;1/2/2020&lt;/TD&gt;&lt;TD&gt;12/25/2019&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Pete Smith&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;3/5/2020&lt;/TD&gt;&lt;TD&gt;12/25/2019&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sarah Jones&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;2/2/2020&lt;/TD&gt;&lt;TD&gt;1/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sarah Jones&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;4/5/2020&lt;/TD&gt;&lt;TD&gt;1/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mark Adams&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;4/7/2020&lt;/TD&gt;&lt;TD&gt;3/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mark Adams&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;6/1/2020&lt;/TD&gt;&lt;TD&gt;3/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is how I would like it to look&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Patient Name&lt;/TD&gt;&lt;TD&gt;Patient ID&lt;/TD&gt;&lt;TD&gt;Test date&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Pete Smith&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;12/25/2019&lt;/TD&gt;&lt;TD&gt;1/2/2020&lt;/TD&gt;&lt;TD&gt;3/5/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sarah Jones&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;1/25/2020&lt;/TD&gt;&lt;TD&gt;2/2/2020&lt;/TD&gt;&lt;TD&gt;4/5/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mark Adams&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;3/25/2020&lt;/TD&gt;&lt;TD&gt;4/7/2020&lt;/TD&gt;&lt;TD&gt;6/1/2020&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Is transposing the best way to do this? Or would I have to merge?&lt;/P&gt;</description>
      <pubDate>Fri, 19 Jul 2024 20:22:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936438#M368084</guid>
      <dc:creator>cc15</dc:creator>
      <dc:date>2024-07-19T20:22:13Z</dc:date>
    </item>
    <item>
      <title>Re: Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936446#M368086</link>
      <description>&lt;P&gt;That data poses no problem for PROC TRANSPOSE.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=have out=want(drop=_name_) prefix=admitdate ;
  by patientid patientname testdate;
  var admitdate;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 19 Jul 2024 20:36:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936446#M368086</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-07-19T20:36:50Z</dc:date>
    </item>
    <item>
      <title>Re: Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936447#M368087</link>
      <description>&lt;P&gt;Since you cannot have two variables with the same name, this is impossible.&lt;/P&gt;</description>
      <pubDate>Fri, 19 Jul 2024 20:51:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936447#M368087</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2024-07-19T20:51:13Z</dc:date>
    </item>
    <item>
      <title>Re: Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936456#M368092</link>
      <description>&lt;P&gt;Alternatively, without changing data structure, it is possible to calculate time difference (eg. how many days) using proc sql summary functions.&lt;BR /&gt;Eg:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards dlm=',' truncover; 
length PatientName $20;
input PatientName $	PatientID $	Admissiondate:mmddyy10.	Testdate: mmddyy10.;
format Admissiondate	Testdate date11.; 
cards; 
Pete Smith,	123,	1/2/2020,	12/25/2019
Pete Smith,	123,	3/5/2020,	12/25/2019
Sarah Jones,	456,	2/2/2020,	1/25/2020
Sarah Jones,	456,	4/5/2020,	1/25/2020
Mark Adams,	789,	4/7/2020,	3/25/2020
Mark Adams,	789,	6/1/2020,	3/25/2020
; 

proc sql;
	create table want as
		select*, min(Admissiondate) as FirstAdmissionDate, max(Admissiondate) as LastAdmissionDate
			from have
		group by 1, 2, 4
	order by 2,3;
quit; &lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;CODE class=" language-sas"&gt;Days= LastAdmissionDate -&amp;nbsp;FirstAdmissionDate;&amp;nbsp;&lt;/CODE&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 19 Jul 2024 21:12:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936456#M368092</guid>
      <dc:creator>A_Kh</dc:creator>
      <dc:date>2024-07-19T21:12:10Z</dc:date>
    </item>
    <item>
      <title>Re: Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936508#M368103</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/466560"&gt;@cc15&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;... so that I can calculate the time difference between the patients first and second hospitalization ...&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;No need to transpose to do that.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  set have;
  by patientid admitdate ;
  days = dif(admitdate);
  if first.patientid then do;
      admitdate1 = admitdate;
     retain admitdate1 ;
    format admitdate1 yymmdd10.;
      days=0;
  end;
  if last.patientid;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 20 Jul 2024 19:37:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936508#M368103</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-07-20T19:37:40Z</dc:date>
    </item>
    <item>
      <title>Re: Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936893#M368170</link>
      <description>&lt;P&gt;I tried the following code, but did not get the desired results, this is what I got:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Patient Name&lt;/TD&gt;&lt;TD&gt;Patient ID&lt;/TD&gt;&lt;TD&gt;Name of former variable&lt;/TD&gt;&lt;TD&gt;Admission date1&lt;/TD&gt;&lt;TD&gt;Test date&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Pete Smith&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;1/2/2020&lt;/TD&gt;&lt;TD&gt;12/25/2019&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Pete Smith&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;3/5/2020&lt;/TD&gt;&lt;TD&gt;12/25/2019&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sarah Jones&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;2/2/2020&lt;/TD&gt;&lt;TD&gt;1/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Sarah Jones&lt;/TD&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;4/5/2020&lt;/TD&gt;&lt;TD&gt;1/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mark Adams&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;4/7/2020&lt;/TD&gt;&lt;TD&gt;3/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;Mark Adams&lt;/TD&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Admission date&lt;/TD&gt;&lt;TD&gt;6/1/2020&lt;/TD&gt;&lt;TD&gt;3/25/2020&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 23 Jul 2024 21:53:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936893#M368170</guid>
      <dc:creator>cc15</dc:creator>
      <dc:date>2024-07-23T21:53:15Z</dc:date>
    </item>
    <item>
      <title>Re: Best way to transpose data with duplicate unique identifiers</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936899#M368173</link>
      <description>&lt;P&gt;You didn't show any code.&amp;nbsp; Just a listing.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;First let's convert your original listing into an actual dataset so we have something to code with.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  input name &amp;amp; :$30. id admit :mmddyy. test :mmddyy.;
  format admit test yymmdd10.;
cards;
Pete Smith   123 1/2/2020 12/25/2019
Pete Smith   123 3/5/2020 12/25/2019
Sarah Jones  456 2/2/2020 1/25/2020
Sarah Jones  456 4/5/2020 1/25/2020
Mark Adams   789 4/7/2020 3/25/2020
Mark Adams   789 6/1/2020 3/25/2020
;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Since it is already sorted by ID we can skip the sorting and go straight to transposing it.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc transpose data=have out=want prefix=admit;
  by id name test;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result:&lt;/P&gt;
&lt;PRE&gt;Obs     id       name              test    _NAME_        admit1        admit2

 1     123    Pete Smith     2019-12-25    admit     2020-01-02    2020-03-05
 2     456    Sarah Jones    2020-01-25    admit     2020-02-02    2020-04-05
 3     789    Mark Adams     2020-03-25    admit     2020-04-07    2020-06-01

&lt;/PRE&gt;
&lt;P&gt;Now if you want to find the difference in DAYS between ADMIT1 and ADMIT2 you can use subtraction.&amp;nbsp; If you want it in some other date interval use INTCK() function.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data differenes;
  set want;
  days = admit2-admit1;
  months = intck('month',admit1,admit2,'cont');
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Result&lt;/P&gt;
&lt;PRE&gt;Obs     id       name              test    _NAME_        admit1        admit2    days    months

 1     123    Pete Smith     2019-12-25    admit     2020-01-02    2020-03-05     63        2
 2     456    Sarah Jones    2020-01-25    admit     2020-02-02    2020-04-05     63        2
 3     789    Mark Adams     2020-03-25    admit     2020-04-07    2020-06-01     55        1
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 24 Jul 2024 01:31:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Best-way-to-transpose-data-with-duplicate-unique-identifiers/m-p/936899#M368173</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2024-07-24T01:31:10Z</dc:date>
    </item>
  </channel>
</rss>

