<?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: Proc transpose in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750981#M236312</link>
    <description>So break them into start/end of years? What happens if one of the dates is in the middle of the year? Please expand your data example.&lt;BR /&gt; I assume you're trying to do a yearly count/calculation?&lt;BR /&gt;I suspect this is a step in something you're trying to do, but really isn't necessary so it may help to clarify what you're trying to do overall.&lt;BR /&gt;</description>
    <pubDate>Tue, 29 Jun 2021 15:29:53 GMT</pubDate>
    <dc:creator>Reeza</dc:creator>
    <dc:date>2021-06-29T15:29:53Z</dc:date>
    <item>
      <title>Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750977#M236310</link>
      <description>&lt;P&gt;Hi SAS Users,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need help in building the below logic.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ex:1) If I have start_date&amp;nbsp; as 01-01-2018&amp;nbsp; and end_date as 12-31-2021&amp;nbsp; &amp;nbsp;for member '123' how do I transpose them into 8 columns like below.&lt;/P&gt;
&lt;P&gt;Ex:2) if I have start date as 01-01-208 and end_date as&amp;nbsp; 12-31-2019 for member '234' then rest of the dates should be blank.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;first_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;first_end_date&amp;nbsp;&amp;nbsp;second_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;second_end_date&amp;nbsp;&amp;nbsp;third_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;third_end_date&amp;nbsp;&amp;nbsp;fourth_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fourth_end_date&lt;/P&gt;
&lt;P&gt;01-01-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;01-01-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01-01-2020&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;12-31-2020&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01-01-2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;12-31-2021&lt;/P&gt;
&lt;P&gt;01-01-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;01-01-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2019&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Ana&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Ana&lt;/P&gt;</description>
      <pubDate>Tue, 29 Jun 2021 15:16:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750977#M236310</guid>
      <dc:creator>SASAna</dc:creator>
      <dc:date>2021-06-29T15:16:33Z</dc:date>
    </item>
    <item>
      <title>Re: Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750981#M236312</link>
      <description>So break them into start/end of years? What happens if one of the dates is in the middle of the year? Please expand your data example.&lt;BR /&gt; I assume you're trying to do a yearly count/calculation?&lt;BR /&gt;I suspect this is a step in something you're trying to do, but really isn't necessary so it may help to clarify what you're trying to do overall.&lt;BR /&gt;</description>
      <pubDate>Tue, 29 Jun 2021 15:29:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750981#M236312</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-06-29T15:29:53Z</dc:date>
    </item>
    <item>
      <title>Re: Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750986#M236314</link>
      <description>&lt;P&gt;Hi Reeza,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Yes, i am trying to split the data by years by calculating the year_span. I have added 3 examples of 3 diff members.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;year_span = 1 + intck('YEAR',start_date, end_date,'D') ;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ex:1) If I have start_date&amp;nbsp; as 01-01-2018&amp;nbsp; and end_date as 12-31-2021&amp;nbsp; &amp;nbsp;for member '123' how do I transpose them into 8 columns like below.&lt;/P&gt;
&lt;P&gt;Ex:2) if I have start date as 01-01-2018 and end_date as&amp;nbsp; 12-31-2019 for member '234' then rest of the dates should be blank.&lt;/P&gt;
&lt;P&gt;Ex:3)&amp;nbsp;if I have start date as 01-01-2019 and end_date as&amp;nbsp; 12-31-2021 for member '345'&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;first_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;first_end_date&amp;nbsp;&amp;nbsp;second_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;second_end_date&amp;nbsp;&amp;nbsp;third_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;third_end_date&amp;nbsp;&amp;nbsp;fourth_start_date&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;fourth_end_date&lt;/P&gt;
&lt;P&gt;01-01-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;01-01-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01-01-2020&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;12-31-2020&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01-01-2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;12-31-2021&lt;/P&gt;
&lt;P&gt;01-01-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2018&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;01-01-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2019&amp;nbsp;&lt;/P&gt;
&lt;P&gt;01-01-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2019&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 01-01-2020&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 12-31-2020&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;01-01-2021&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;12-31-2021&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Ana&lt;/P&gt;</description>
      <pubDate>Tue, 29 Jun 2021 15:39:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750986#M236314</guid>
      <dc:creator>SASAna</dc:creator>
      <dc:date>2021-06-29T15:39:35Z</dc:date>
    </item>
    <item>
      <title>Re: Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750990#M236317</link>
      <description>&lt;P&gt;Sorry, no time to fully code this but you can use INTCK() to get the number of years intervals and INTNX() to increment your dates. &lt;BR /&gt;&lt;BR /&gt;Assuming you start off with something like:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;ID Start End&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;Then your code would be something like:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set have;

nYears = intck('year', start, end);
do i=1 to nYears;
*may need some tweaking;
start_date = intnx('year', startDate, i-1, 's');
end_date = intnx('year', startdate, i-1, 'e');
output;
end;
run;

proc transpose data=want out=wide prefix=Start_Date;;
by ID:
id i;
var start_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;Repeat for End Date and then MERGE the results by ID. &lt;BR /&gt;This will be fully dynamic and you don't need to know how many variables you'll need ahead of time.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Jun 2021 16:00:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750990#M236317</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2021-06-29T16:00:27Z</dc:date>
    </item>
    <item>
      <title>Re: Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750991#M236318</link>
      <description>&lt;P&gt;This is pretty simple if you are willing to keep the data set long, instead of creating a wide data set. Furthermore, the long data set would be recommended (&lt;A href="https://communities.sas.com/t5/SAS-Communities-Library/Maxims-of-Maximally-Efficient-SAS-Programmers/ta-p/352068" target="_self"&gt;Maxim 19&lt;/A&gt;) for most additional tasks, making the subsequent programming much easier.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
     id=123;
     start_date='01JAN2018'd;
     end_date='31DEC2021'd;
     output;
     id=234;
     start_date='01JAN2018'd;
     end_date='31DEC2019'd;
    output;
run;
data want;
    set have;
    start=start_date;
    instance=1;
    do while(start&amp;lt;=end_date);
        end=intnx('year',start,0,'e');
        output;
        instance=instance+1;
        start=intnx('year',start,1,'b');
    end;
    format start end date9.;
    drop start_date end_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Tue, 29 Jun 2021 15:52:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750991#M236318</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-06-29T15:52:22Z</dc:date>
    </item>
    <item>
      <title>Re: Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750995#M236321</link>
      <description>&lt;P&gt;Split the time into&amp;nbsp;&lt;EM&gt;observations&lt;/EM&gt;, not columns, and let PROC REPORT do the rest.&lt;/P&gt;</description>
      <pubDate>Tue, 29 Jun 2021 15:57:05 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/750995#M236321</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2021-06-29T15:57:05Z</dc:date>
    </item>
    <item>
      <title>Re: Proc transpose</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/751007#M236328</link>
      <description>Thank you. it worked very well</description>
      <pubDate>Tue, 29 Jun 2021 16:37:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Proc-transpose/m-p/751007#M236328</guid>
      <dc:creator>SASAna</dc:creator>
      <dc:date>2021-06-29T16:37:28Z</dc:date>
    </item>
  </channel>
</rss>

