<?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: Complex Transposing of Panel Data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622389#M183081</link>
    <description>&lt;P&gt;As it is a simple data issue, no macro coding necessary, only arrays:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.HAVE;
  infile datalines dsd truncover;
  input
    ID:32.
    Company:$9.
    Period_End_Date:MMDDYY8.
    Q4_Amount:32.
    Q3_Amount:32.
    Q2_Amount:32.
    Q1_Amount:32.
    Q4_Filing_Date:MMDDYY8.
    Q3_Filing_Date:MMDDYY8.
    Q2_Filing_Date:MMDDYY8.
    Q1_Filing_Date:MMDDYY8.
    First_Date:MMDDYY8.
  ;
  format
    Period_End_Date Q4_Filing_Date Q3_Filing_Date Q2_Filing_Date
    Q1_Filing_Date First_Date e8601da10.
  ;
datalines4;
1360442,MICROSOFT,12/31/14,-13070346,0,0,0,04/15/15,11/19/14,08/19/14,05/19/14,04/15/15
;;;;

data want;
set have;
array amounts{4} q1_amount q2_amount q3_amount q4_amount;
array dates{4} q1_filing_date q2_filing_date q3_filing_date q4_filing_date;
format filing_date e8601da10.;
do quarter = 1 to 4;
  amount = amounts{quarter};
  filing_date = dates{quarter};
  output;
end;
keep id company period_end_date quarter filing_date amount first_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note that I always use proper, standardized date formats with 4-digit years and a ymd order. After the Y2K scare, still using 2-digit years anywhere is simply crazy and constitutes gross negligence.&lt;/P&gt;
&lt;P&gt;E8601DA10. is equal to YYMMDDD10.&lt;/P&gt;</description>
    <pubDate>Wed, 05 Feb 2020 09:18:15 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2020-02-05T09:18:15Z</dc:date>
    <item>
      <title>Complex Transposing of Panel Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622364#M183072</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Dear Stata Community:&amp;nbsp;&lt;/P&gt;&lt;P&gt;I have the following data. The data year quarter panel data but all the quarter amounts and dates are in one row. I would like to transpose them. Here is the have data set:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.HAVE;
  infile datalines dsd truncover;
  input ID:32. Company:$9. Period_End_Date:MMDDYY8. Q4_Amount:32. Q3_Amount:32. Q3_Amount0:32. Q1_Amount:32. Q4_Filing_Date:MMDDYY8. Q3_Filing_Date:MMDDYY8. Q2_Filing_Date:MMDDYY8. Q1_Filing_Date:MMDDYY8. First_Date:MMDDYY8.;
  format Period_End_Date MMDDYY8. Q4_Filing_Date MMDDYY8. Q3_Filing_Date MMDDYY8. Q2_Filing_Date MMDDYY8. Q1_Filing_Date MMDDYY8. First_Date MMDDYY8.;
datalines4;
1360442,MICROSOFT,12/31/14,-13070346,0,0,0,04/15/15,11/19/14,08/19/14,05/19/14,04/15/15
;;;;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the want dataset:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.WANT;
  infile datalines dsd truncover;
  input ID:32. Company:$9. Period_End_Date:MMDDYY8. Quarter:32. Amount:32. Filing_Date:MMDDYY8. First_Date:MMDDYY8.;
  format Period_End_Date MMDDYY8. Filing_Date MMDDYY8. First_Date MMDDYY8.;
datalines4;
1360442,MICROSOFT,12/31/14,1,0,05/19/14,04/15/15
1360442,MICROSOFT,12/31/14,2,0,08/19/14,04/15/15
1360442,MICROSOFT,12/31/14,3,0,11/19/14,04/15/15
1360442,MICROSOFT,12/31/14,4,-13070346,04/15/15,04/15/15
;;;;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;I would appreciate efficient code suggestions. Thanks in advance!&lt;/P&gt;</description>
      <pubDate>Wed, 05 Feb 2020 06:40:38 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622364#M183072</guid>
      <dc:creator>Agent1592</dc:creator>
      <dc:date>2020-02-05T06:40:38Z</dc:date>
    </item>
    <item>
      <title>Re: Complex Transposing of Panel Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622366#M183074</link>
      <description>&lt;P&gt;Please let us know if this worked for you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.HAVE;
  infile datalines dsd truncover;
  input ID:32. Company:$9. Period_End_Date:MMDDYY8. Q4_Amount:32. Q3_Amount:32. Q3_Amount0:32. Q1_Amount:32. Q4_Filing_Date:MMDDYY8. Q3_Filing_Date:MMDDYY8. Q2_Filing_Date:MMDDYY8. Q1_Filing_Date:MMDDYY8. First_Date:MMDDYY8.;
  format Period_End_Date MMDDYY8. Q4_Filing_Date MMDDYY8. Q3_Filing_Date MMDDYY8. Q2_Filing_Date MMDDYY8. Q1_Filing_Date MMDDYY8. First_Date MMDDYY8.;
datalines4;
1360442,MICROSOFT,12/31/14,-13070346,0,0,0,04/15/15,11/19/14,08/19/14,05/19/14,04/15/15
;;;;
run;

%macro runit;
data want(keep=ID Company Period_End_Date Quarter Amount Filing_Date First_Date);
format Period_End_Date MMDDYY8. Filing_Date MMDDYY8. First_Date MMDDYY8.;
set have;
%do i=1 %to 4;
	Quarter=&amp;amp;i;
	Amount=Q&amp;amp;i._Amount;
	Filing_Date=Q&amp;amp;i._Filing_Date;
	output;
%end;
run;
%mend runit;
%runit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 05 Feb 2020 06:57:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622366#M183074</guid>
      <dc:creator>Satish_Parida</dc:creator>
      <dc:date>2020-02-05T06:57:18Z</dc:date>
    </item>
    <item>
      <title>Re: Complex Transposing of Panel Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622389#M183081</link>
      <description>&lt;P&gt;As it is a simple data issue, no macro coding necessary, only arrays:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.HAVE;
  infile datalines dsd truncover;
  input
    ID:32.
    Company:$9.
    Period_End_Date:MMDDYY8.
    Q4_Amount:32.
    Q3_Amount:32.
    Q2_Amount:32.
    Q1_Amount:32.
    Q4_Filing_Date:MMDDYY8.
    Q3_Filing_Date:MMDDYY8.
    Q2_Filing_Date:MMDDYY8.
    Q1_Filing_Date:MMDDYY8.
    First_Date:MMDDYY8.
  ;
  format
    Period_End_Date Q4_Filing_Date Q3_Filing_Date Q2_Filing_Date
    Q1_Filing_Date First_Date e8601da10.
  ;
datalines4;
1360442,MICROSOFT,12/31/14,-13070346,0,0,0,04/15/15,11/19/14,08/19/14,05/19/14,04/15/15
;;;;

data want;
set have;
array amounts{4} q1_amount q2_amount q3_amount q4_amount;
array dates{4} q1_filing_date q2_filing_date q3_filing_date q4_filing_date;
format filing_date e8601da10.;
do quarter = 1 to 4;
  amount = amounts{quarter};
  filing_date = dates{quarter};
  output;
end;
keep id company period_end_date quarter filing_date amount first_date;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Note that I always use proper, standardized date formats with 4-digit years and a ymd order. After the Y2K scare, still using 2-digit years anywhere is simply crazy and constitutes gross negligence.&lt;/P&gt;
&lt;P&gt;E8601DA10. is equal to YYMMDDD10.&lt;/P&gt;</description>
      <pubDate>Wed, 05 Feb 2020 09:18:15 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622389#M183081</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-02-05T09:18:15Z</dc:date>
    </item>
    <item>
      <title>Re: Complex Transposing of Panel Data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622400#M183082</link>
      <description>&lt;P&gt;Another Approach.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data WORK.HAVE;
  infile datalines dsd truncover;
  input ID:32. Company:$9. Period_End_Date:MMDDYY8. Q4_Amount:32. Q3_Amount:32. Q2_Amount:32. Q1_Amount:32. Q4_Filing_Date:MMDDYY8. Q3_Filing_Date:MMDDYY8. Q2_Filing_Date:MMDDYY8. Q1_Filing_Date:MMDDYY8. First_Date:MMDDYY8.;
  format Period_End_Date MMDDYY8. Q4_Filing_Date MMDDYY8. Q3_Filing_Date MMDDYY8. Q2_Filing_Date MMDDYY8. Q1_Filing_Date MMDDYY8. First_Date MMDDYY8.;
datalines4;
1360442,MICROSOFT,12/31/14,-13070346,0,0,0,04/15/15,11/19/14,08/19/14,05/19/14,04/15/15
;;;;
run;

proc transpose data =have out=temp;
by ID Company Period_End_Date First_Date;
var Q1_Amount Q2_Amount Q3_Amount Q4_Amount Q1_Filing_Date Q2_Filing_Date Q3_Filing_Date Q4_Filing_Date;
run;

data want(rename=(col1=Amount) drop=_name_);
format Filing_Date MMDDYY8.;
set temp(obs=4) ;
set temp(firstobs=5 keep=col1 rename=(col1=Filing_Date));
Qurater=substr(_name_,2,1);
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 05 Feb 2020 10:11:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Complex-Transposing-of-Panel-Data/m-p/622400#M183082</guid>
      <dc:creator>Satish_Parida</dc:creator>
      <dc:date>2020-02-05T10:11:49Z</dc:date>
    </item>
  </channel>
</rss>

