<?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: merge panel data with cross-section in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207778#M51587</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;&lt;CODE style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif;"&gt;%macro ratio_m(id);&lt;BR /&gt;proc sql;&lt;BR /&gt;select id1, sum(x*z) as wx&lt;BR /&gt;&amp;nbsp; from table2 as P right join table1 as N&lt;BR /&gt;&amp;nbsp; on input(N.id2,8.)=P.id&lt;BR /&gt;&amp;nbsp; group by id1;&lt;BR /&gt;create table temp2&lt;BR /&gt;as&lt;BR /&gt;select orig_id, sum(y*z) as wy&lt;BR /&gt;&amp;nbsp; from table2 as P right join table1 as N&lt;BR /&gt;&amp;nbsp; on input(N.id2,8.)=P.id&lt;BR /&gt;&amp;nbsp; group by id1;&lt;BR /&gt;%if %sysfunc(exist(final)) %then %do;&lt;BR /&gt;&amp;nbsp; drop table final;&lt;BR /&gt;%end;&lt;BR /&gt;create table final&lt;BR /&gt;as&lt;BR /&gt;select &amp;amp;i as indexRow, one.*, two.*, (wx/wy) as ratio&lt;BR /&gt;&amp;nbsp; from temp1 as one right join temp2 as two&lt;BR /&gt;&amp;nbsp; on one.id1=two.id1;&lt;BR /&gt;quit;&lt;BR /&gt;%mend;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;%macro main;&lt;BR /&gt;&amp;nbsp; %if %sysfunc(exist(Index_dsn))=1 %then %do;&lt;BR /&gt;&amp;nbsp; %if %sysfunc(exist(final_overall))=1 %then %do;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexRow from final_overall&lt;BR /&gt;&amp;nbsp; ;%let indexRow=%sysfunc(sum(&amp;amp;indexRow,1)); %put &amp;amp;indexRow;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexFinal from Index_dsn&lt;BR /&gt;&amp;nbsp; ;%let indexFinal=&amp;amp;indexFinal; %put &amp;amp;indexFinal;&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; %put Previous calculation ends on row &amp;amp;indexRow ;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; %else %if %sysfunc(exist(final_overall))=0 %then %do;&lt;BR /&gt;&amp;nbsp; %put "First Iteration: Dataset final_overall does not exist";&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexFinal from Index_dsn;&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;&amp;nbsp; create table final_overall&lt;BR /&gt;&amp;nbsp; (indexRow num&lt;BR /&gt;&amp;nbsp; ,id1 char(10)&lt;BR /&gt;&amp;nbsp; ,ratio num);&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; %let indexFinal=&amp;amp;indexFinal; %let indexRow=1;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; %else %if %sysfunc(exist(Index_dsn))=0 %then %do;&lt;BR /&gt;&amp;nbsp; %put "Datasets Index_dsn and final_overall dont exist";&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; create table Index_dsn AS &lt;BR /&gt;&amp;nbsp; select distinct id1 from table1;&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; data Index_dsn; set Index_dsn; indexRow+1; run;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexFinal from Index_dsn;&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;&amp;nbsp; %let indexFinal=&amp;amp;indexFinal; %let indexRow=1;&lt;BR /&gt;&amp;nbsp; create table final_overall&lt;BR /&gt;&amp;nbsp; (indexRow num&lt;BR /&gt;&amp;nbsp; ,id1 char(10)&lt;BR /&gt;&amp;nbsp; ,ratio num);&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; %do i=&amp;amp;indexRow %to &amp;amp;indexFinal;&lt;BR /&gt;&amp;nbsp; proc sql;&lt;BR /&gt;&amp;nbsp; select id1 into :id from Index_dsn where indexRow=&amp;amp;i&lt;BR /&gt;&amp;nbsp; ; %let id=&amp;amp;id;&lt;BR /&gt;&amp;nbsp; quit;&lt;BR /&gt;&amp;nbsp; %put &amp;amp;id;&lt;BR /&gt;&amp;nbsp; %ratio_m (&amp;amp;id);&lt;BR /&gt;&amp;nbsp; proc append base=.final_overall data=final force; run;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&lt;BR /&gt;%mend;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;options nomlogic;&lt;BR /&gt;%main&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 26 Aug 2015 18:04:02 GMT</pubDate>
    <dc:creator>arsenalist</dc:creator>
    <dc:date>2015-08-26T18:04:02Z</dc:date>
    <item>
      <title>merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207774#M51583</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;I have two data sets which look like this:&lt;/P&gt;&lt;BLOCKQUOTE class="jive-quote" style="margin: 0 0 10px; padding-left: 10px; border-left-color: #ffeb8e; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #fff9e3;"&gt;&lt;P style="margin: 0 0 1em;"&gt;id1&amp;nbsp;&amp;nbsp; id2&amp;nbsp;&amp;nbsp; Z&lt;/P&gt;&lt;HR style="color: #dddddd; margin-bottom: 20px; background-color: #dddddd;" /&gt;&lt;P style="margin: 0 0 1em;"&gt;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; z11&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;1&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; z12&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;1&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; z13&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;2&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; z21&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;2&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; z22&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;2&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; z23&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;3&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; z31&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;3&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; z32&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; z33&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;and&lt;/P&gt;&lt;BLOCKQUOTE class="jive-quote" style="margin: 0 0 10px; padding-left: 10px; border-left-color: #ffeb8e; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #fff9e3;"&gt;&lt;P style="margin: 0 0 1em;"&gt;id&amp;nbsp;&amp;nbsp; X&amp;nbsp;&amp;nbsp; Y&lt;/P&gt;&lt;HR style="color: #dddddd; margin-bottom: 20px; background-color: #dddddd;" /&gt;&lt;P style="margin: 0 0 1em;"&gt;1&amp;nbsp;&amp;nbsp; x1&amp;nbsp;&amp;nbsp; y1&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;2&amp;nbsp;&amp;nbsp; x2&amp;nbsp;&amp;nbsp; y2&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; x3&amp;nbsp;&amp;nbsp; y3&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;I am new to SAS but my programming skills are very good when it comes to Stata and R.&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Can someone please help me write a code in SAS that will create a new data set as such:&lt;/P&gt;&lt;BLOCKQUOTE class="jive-quote" style="margin: 0 0 10px; padding-left: 10px; border-left-color: #ffeb8e; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #fff9e3;"&gt;&lt;P style="margin: 0 0 1em;"&gt;id&amp;nbsp;&amp;nbsp; W&lt;/P&gt;&lt;HR style="color: #dddddd; margin-bottom: 20px; background-color: #dddddd;" /&gt;&lt;P style="margin: 0 0 1em;"&gt;1&amp;nbsp;&amp;nbsp; w1&lt;/P&gt;&lt;P style="margin: 0 0 1em;"&gt;2&amp;nbsp;&amp;nbsp; w2&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; w3&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;where w1 = (z11*x1+z12*x2+z13*x3) / (z11*y1+z12*y2+z13*y3)&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Forget about the fact that you can factor out the z's. The weighting doesn't exactly work like that, I've just simplified it.&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;Thank you!&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;&lt;/P&gt;&lt;P style="margin: 0 0 1em; font-size: 15px; color: #222222; font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; background-color: #ffffff;"&gt;ps. I have asked the exact same question on stackexchange before realizing there is a SAS community here. I hope that's okay.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2015 13:27:53 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207774#M51583</guid>
      <dc:creator>arsenalist</dc:creator>
      <dc:date>2015-08-26T13:27:53Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207775#M51584</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;AFAIK there is no issue with cross posting. But if you do receive an answer in one it would be polite to mark the question answered in both and put the answer in both locations.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Here's one way using temporary arrays. I'm not sure it's correct given your SO code which makes me wonder if the process is more involved, but perhaps it will help you get started. Although Table2 has an ID variable it doesn't appear to be an ID, more of a row number, is that correct? &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data t1;&lt;/P&gt;&lt;P&gt;input id1 id2 Z ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 8&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 9&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 10&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 11&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 12&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 13&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 14&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 15&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 16&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data t2;&lt;/P&gt;&lt;P&gt;input id x&amp;nbsp; y ;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp; 1&amp;nbsp;&amp;nbsp; 4&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp; 2&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp; 3&amp;nbsp;&amp;nbsp; 5&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc transpose data=t1 out=t1_f prefix=z;&lt;/P&gt;&lt;P&gt;by id1;&lt;/P&gt;&lt;P&gt;var z;&lt;/P&gt;&lt;P&gt;id id2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P&gt;*load factors into temporary arrays to multiply;&lt;/P&gt;&lt;P&gt;if _n_=1 then do i=1 to 3;&lt;/P&gt;&lt;P&gt;set t2;&lt;/P&gt;&lt;P&gt;array _x(3) _temporary_;&lt;/P&gt;&lt;P&gt;array _y(3) _temporary_;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;_x(i)=x;&lt;/P&gt;&lt;P&gt;_y(i)=y;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Start with actual data flipped;&lt;/P&gt;&lt;P&gt;set t1_f;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;array z(3) z1-z3;&lt;/P&gt;&lt;P&gt;*initialize to 0;&lt;/P&gt;&lt;P&gt;num=0;&lt;/P&gt;&lt;P&gt;den=0;&lt;/P&gt;&lt;P&gt;*Calculate numerator/denominator;&lt;/P&gt;&lt;P&gt;do i=1 to 3;&lt;/P&gt;&lt;P&gt;num=num+z(i)*_x(i);&lt;/P&gt;&lt;P&gt;den=den+z(i)*_y(i);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;*Calculate final weight;&lt;/P&gt;&lt;P&gt;w=num/den;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2015 16:37:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207775#M51584</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-08-26T16:37:54Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207776#M51585</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much Reeza for such a quick response.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Would this wirj if the data set is very large? I have 20,000 panels with about 20,000 obs in each panel.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2015 18:01:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207776#M51585</guid>
      <dc:creator>arsenalist</dc:creator>
      <dc:date>2015-08-26T18:01:01Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207777#M51586</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;By the way, this is the code I already have but I don't think it's optimized for a large data set (20,000 x 20,000) since it creates a temporary table for each panel. I did that because I didn't want to lose the work already done in case the computer shuts down or something I can start where I left off basically.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2015 18:02:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207777#M51586</guid>
      <dc:creator>arsenalist</dc:creator>
      <dc:date>2015-08-26T18:02:42Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207778#M51587</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Here is the code:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: arial, helvetica, sans-serif;"&gt;&lt;CODE style="font-family: Consolas, Menlo, Monaco, 'Lucida Console', 'Liberation Mono', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Courier New', monospace, sans-serif;"&gt;%macro ratio_m(id);&lt;BR /&gt;proc sql;&lt;BR /&gt;select id1, sum(x*z) as wx&lt;BR /&gt;&amp;nbsp; from table2 as P right join table1 as N&lt;BR /&gt;&amp;nbsp; on input(N.id2,8.)=P.id&lt;BR /&gt;&amp;nbsp; group by id1;&lt;BR /&gt;create table temp2&lt;BR /&gt;as&lt;BR /&gt;select orig_id, sum(y*z) as wy&lt;BR /&gt;&amp;nbsp; from table2 as P right join table1 as N&lt;BR /&gt;&amp;nbsp; on input(N.id2,8.)=P.id&lt;BR /&gt;&amp;nbsp; group by id1;&lt;BR /&gt;%if %sysfunc(exist(final)) %then %do;&lt;BR /&gt;&amp;nbsp; drop table final;&lt;BR /&gt;%end;&lt;BR /&gt;create table final&lt;BR /&gt;as&lt;BR /&gt;select &amp;amp;i as indexRow, one.*, two.*, (wx/wy) as ratio&lt;BR /&gt;&amp;nbsp; from temp1 as one right join temp2 as two&lt;BR /&gt;&amp;nbsp; on one.id1=two.id1;&lt;BR /&gt;quit;&lt;BR /&gt;%mend;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;%macro main;&lt;BR /&gt;&amp;nbsp; %if %sysfunc(exist(Index_dsn))=1 %then %do;&lt;BR /&gt;&amp;nbsp; %if %sysfunc(exist(final_overall))=1 %then %do;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexRow from final_overall&lt;BR /&gt;&amp;nbsp; ;%let indexRow=%sysfunc(sum(&amp;amp;indexRow,1)); %put &amp;amp;indexRow;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexFinal from Index_dsn&lt;BR /&gt;&amp;nbsp; ;%let indexFinal=&amp;amp;indexFinal; %put &amp;amp;indexFinal;&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; %put Previous calculation ends on row &amp;amp;indexRow ;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; %else %if %sysfunc(exist(final_overall))=0 %then %do;&lt;BR /&gt;&amp;nbsp; %put "First Iteration: Dataset final_overall does not exist";&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexFinal from Index_dsn;&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;&amp;nbsp; create table final_overall&lt;BR /&gt;&amp;nbsp; (indexRow num&lt;BR /&gt;&amp;nbsp; ,id1 char(10)&lt;BR /&gt;&amp;nbsp; ,ratio num);&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; %let indexFinal=&amp;amp;indexFinal; %let indexRow=1;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&amp;nbsp; %else %if %sysfunc(exist(Index_dsn))=0 %then %do;&lt;BR /&gt;&amp;nbsp; %put "Datasets Index_dsn and final_overall dont exist";&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; create table Index_dsn AS &lt;BR /&gt;&amp;nbsp; select distinct id1 from table1;&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; data Index_dsn; set Index_dsn; indexRow+1; run;&lt;BR /&gt;&amp;nbsp; proc sql noprint;&lt;BR /&gt;&amp;nbsp; select max(indexRow) into :indexFinal from Index_dsn;&lt;BR /&gt;&amp;nbsp; ;&lt;BR /&gt;&amp;nbsp; %let indexFinal=&amp;amp;indexFinal; %let indexRow=1;&lt;BR /&gt;&amp;nbsp; create table final_overall&lt;BR /&gt;&amp;nbsp; (indexRow num&lt;BR /&gt;&amp;nbsp; ,id1 char(10)&lt;BR /&gt;&amp;nbsp; ,ratio num);&lt;BR /&gt;&amp;nbsp; ;quit;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; %do i=&amp;amp;indexRow %to &amp;amp;indexFinal;&lt;BR /&gt;&amp;nbsp; proc sql;&lt;BR /&gt;&amp;nbsp; select id1 into :id from Index_dsn where indexRow=&amp;amp;i&lt;BR /&gt;&amp;nbsp; ; %let id=&amp;amp;id;&lt;BR /&gt;&amp;nbsp; quit;&lt;BR /&gt;&amp;nbsp; %put &amp;amp;id;&lt;BR /&gt;&amp;nbsp; %ratio_m (&amp;amp;id);&lt;BR /&gt;&amp;nbsp; proc append base=.final_overall data=final force; run;&lt;BR /&gt;&amp;nbsp; %end;&lt;BR /&gt;&lt;BR /&gt;%mend;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;options nomlogic;&lt;BR /&gt;%main&lt;/CODE&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2015 18:04:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207778#M51587</guid>
      <dc:creator>arsenalist</dc:creator>
      <dc:date>2015-08-26T18:04:02Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207779#M51588</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Perhaps post what you have originally and desire instead, that looks overly complicated. &lt;/P&gt;&lt;P&gt;For weight calculations you may be better off using a combination of proc means with the weight statement or if you really need matrix math then going into IML.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 26 Aug 2015 19:19:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207779#M51588</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-08-26T19:19:18Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207780#M51589</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yeah. Agree with Reeza.&lt;/P&gt;&lt;P&gt;Since you have good programming skill about R , you should take a look at SAS/IML code, because They are all Matrix language .&lt;/P&gt;&lt;P&gt;And Better Post it at IML forum . I saw you are doing some INNER product of matrix , that is matrix operation . Not good for data step, but good for IML and R. The result is in table WANT .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="color: #353535; font-family: Lato, sans-serif; font-size: 14px;"&gt;&lt;/P&gt;&lt;H3&gt;Code: Program&lt;/H3&gt;&lt;DIV class="sce-html-export" style="font-family: 'Courier New', Menlo, 'Lucida Console';"&gt;&lt;PRE class="sce-render" style="font-family: 'Courier New', Menlo, 'Lucida Console'; font-size: 16px;"&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;data&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;t1&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;input&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;id1&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;id2&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;Z&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;cards&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;1 1 8&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;1 2 9&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;1 3 10&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;2 1 11&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;2 2 12&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;2 3 13&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;3 1 14&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;3 2 15&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;3 3 16&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;run&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;data&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;t2&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;input&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;id&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;x&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;y&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;cards&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;1 1 4&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;2 2 5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="cards-data" style="color: #bb9905;"&gt;3 3 5&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;run&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;proc&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;iml&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;use&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;t1&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;read&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;all&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;var&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;_all_&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;into&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;z&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;close&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;use&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;t2&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;read&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;all&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;var&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;{&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;x&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;y&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;}&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;into&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;xy&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;close&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="text" style="color: black;"&gt;zz&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;=&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;full&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;(&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;z&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;[&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;,&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;{&lt;/SPAN&gt;&lt;SPAN class="numeric" style="color: #008080; font-weight: bold;"&gt;3&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="numeric" style="color: #008080; font-weight: bold;"&gt;1&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="numeric" style="color: #008080; font-weight: bold;"&gt;2&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;}&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;]&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;)&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="text" style="color: black;"&gt;inner_product&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;=&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;zz&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;*&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;xy&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;id&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;=&lt;/SPAN&gt;&lt;SPAN class="numeric" style="color: #008080; font-weight: bold;"&gt;1&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;:&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;nrow&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;(&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;inner_product&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;)&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="text" style="color: black;"&gt;want&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;=&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;id&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;`&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;|&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;|&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;(&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;inner_product&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;[&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;,&lt;/SPAN&gt;&lt;SPAN class="numeric" style="color: #008080; font-weight: bold;"&gt;1&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;]&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;/&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;inner_product&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;[&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;,&lt;/SPAN&gt;&lt;SPAN class="numeric" style="color: #008080; font-weight: bold;"&gt;2&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;]&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;)&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;create&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;want&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;from&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;want&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;[&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;c&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;=&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;{&lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;id&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;w&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;}&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;]&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;append&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;from&lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt; &lt;/SPAN&gt;&lt;SPAN class="text" style="color: black;"&gt;want&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="keyword" style="color: #0000ff;"&gt;close&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;BR /&gt;&lt;SPAN class="sec-keyword" style="color: #000080; font-weight: bold;"&gt;quit&lt;/SPAN&gt;&lt;SPAN class="sep" style="color: black;"&gt;;&lt;/SPAN&gt;&lt;/PRE&gt;&lt;DIV&gt;&lt;SPAN class="sep" style="color: black;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;P&gt;&lt;/P&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Xia Keshan&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 27 Aug 2015 13:34:50 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207780#M51589</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-08-27T13:34:50Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207781#M51590</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you all. I don't think the IML solutions work with the size of my data set which is not very wide(4-5 variables) but is very long (20,000 panels and 20,000 obs in each roughly, not balanced).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Aug 2015 14:00:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207781#M51590</guid>
      <dc:creator>arsenalist</dc:creator>
      <dc:date>2015-08-28T14:00:36Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207782#M51591</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Did you run my IML code. This code is designed for &lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;"&lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;(4-5 variables) but is very long (20,000 panels and 20,000 obs "&lt;/SPAN&gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Aug 2015 14:36:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207782#M51591</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2015-08-28T14:36:51Z</dc:date>
    </item>
    <item>
      <title>Re: merge panel data with cross-section</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207783#M51592</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;One thing that's nice about SAS is that the size of datasets, minus mismatched matrices, don't matter too match.&amp;nbsp; The same code that works on 100 obs works on 1000000, &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 28 Aug 2015 14:40:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/merge-panel-data-with-cross-section/m-p/207783#M51592</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-08-28T14:40:49Z</dc:date>
    </item>
  </channel>
</rss>

