<?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: Replacing the value of duplicates in panel data in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378408#M90905</link>
    <description>&lt;P&gt;something like this&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data =test;
by code year_;
run;

data have;
set test;
by code year_;
retain item2999_new;
if item2999 ne . then item2999_new=item2999;
   else item2999= item2999_new;
drop item2999_new;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 22 Jul 2017 12:41:06 GMT</pubDate>
    <dc:creator>kiranv_</dc:creator>
    <dc:date>2017-07-22T12:41:06Z</dc:date>
    <item>
      <title>Replacing the value of duplicates in panel data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378403#M90901</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Now, I got following data structure.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &amp;nbsp;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/10475i033900BF5B7DE221/image-size/original?v=1.0&amp;amp;px=-1" border="0" alt="table1.jpg" title="table1.jpg" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;What I want to do is to replace missing values of item2999 to item2999 of same id and same year but freq==A&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;so that it would be..&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;IMG src="https://communities.sas.com/t5/image/serverpage/image-id/10476i0ADA36A257EF003D/image-size/original?v=1.0&amp;amp;px=-1" border="0" alt="table2.png" title="table2.png" /&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Anyone know how to do this without lag operator?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Many Thanks.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is the SAS code for making dataset.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data test;&lt;BR /&gt;input code year_ freq $ item2999;&lt;BR /&gt;cards;&lt;BR /&gt;1 2000 A 1934&lt;BR /&gt;1 2001 A 1111&lt;BR /&gt;1 2002 A 2425&lt;BR /&gt;1 2002 B .&lt;BR /&gt;1 2003 A 2134&lt;BR /&gt;1 2003 B .&lt;BR /&gt;1 2004 A 111&lt;BR /&gt;2 2000 A 2166&lt;BR /&gt;2 2001 A 124125&lt;BR /&gt;2 2002 A 34643634&lt;BR /&gt;2 2003 A 12321451&lt;BR /&gt;2 2003 B 241242&lt;BR /&gt;2 2004 B .&lt;BR /&gt;2 2004 A 484848&lt;BR /&gt;;&lt;BR /&gt;run;&lt;/P&gt;</description>
      <pubDate>Sat, 22 Jul 2017 10:54:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378403#M90901</guid>
      <dc:creator>jkim197</dc:creator>
      <dc:date>2017-07-22T10:54:07Z</dc:date>
    </item>
    <item>
      <title>Re: Replacing the value of duplicates in panel data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378408#M90905</link>
      <description>&lt;P&gt;something like this&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sort data =test;
by code year_;
run;

data have;
set test;
by code year_;
retain item2999_new;
if item2999 ne . then item2999_new=item2999;
   else item2999= item2999_new;
drop item2999_new;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 22 Jul 2017 12:41:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378408#M90905</guid>
      <dc:creator>kiranv_</dc:creator>
      <dc:date>2017-07-22T12:41:06Z</dc:date>
    </item>
    <item>
      <title>Re: Replacing the value of duplicates in panel data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378411#M90907</link>
      <description>&lt;P&gt;Here's a small detail that makes a big difference in the effectiveness of various solutions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sometimes the A record appears before the B record, sometimes the other way around. &amp;nbsp;Is it OK to sort the data set by all three variables: &amp;nbsp;CODE YEAR_ FREQ ?&lt;/P&gt;</description>
      <pubDate>Sat, 22 Jul 2017 13:26:58 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378411#M90907</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-07-22T13:26:58Z</dc:date>
    </item>
    <item>
      <title>Re: Replacing the value of duplicates in panel data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378412#M90908</link>
      <description>Yes it's okey to do so.</description>
      <pubDate>Sat, 22 Jul 2017 13:36:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378412#M90908</guid>
      <dc:creator>jkim197</dc:creator>
      <dc:date>2017-07-22T13:36:07Z</dc:date>
    </item>
    <item>
      <title>Re: Replacing the value of duplicates in panel data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378413#M90909</link>
      <description>&lt;P&gt;OK, similar to what was already suggested:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=have;&lt;/P&gt;
&lt;P&gt;by code year_ freq;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by code year_;&lt;/P&gt;
&lt;P&gt;retain replacement_value;&lt;/P&gt;
&lt;P&gt;if first.year_ then replacement_value = item2999;&lt;/P&gt;
&lt;P&gt;else if item_2999=. then item_2999 = replacement_value;&lt;/P&gt;
&lt;P&gt;drop replacement_value;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;There are safeguards that could complicate the program (not included here). &amp;nbsp;For example, what if a year contains two B records, but no A records. &amp;nbsp;Should the first B record supply a value to replace a missing second B record? &amp;nbsp;I skipped that sort of complication.&lt;/P&gt;</description>
      <pubDate>Sat, 22 Jul 2017 13:43:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378413#M90909</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-07-22T13:43:55Z</dc:date>
    </item>
    <item>
      <title>Re: Replacing the value of duplicates in panel data</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378482#M90963</link>
      <description>&lt;P&gt;And if you want to avoid sorting:-&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; test;&lt;/P&gt;&lt;P&gt;input code year_ freq $ item2999;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;1 2000 A 1934&lt;/P&gt;&lt;P&gt;1 2001 A 1111&lt;/P&gt;&lt;P&gt;1 2002 A 2425&lt;/P&gt;&lt;P&gt;1 2002 B .&lt;/P&gt;&lt;P&gt;1 2003 A 2134&lt;/P&gt;&lt;P&gt;1 2003 B .&lt;/P&gt;&lt;P&gt;1 2004 A 111&lt;/P&gt;&lt;P&gt;2 2000 A 2166&lt;/P&gt;&lt;P&gt;2 2001 A 124125&lt;/P&gt;&lt;P&gt;2 2002 A 34643634&lt;/P&gt;&lt;P&gt;2 2003 A 12321451&lt;/P&gt;&lt;P&gt;2 2003 B 241242&lt;/P&gt;&lt;P&gt;2 2004 B .&lt;/P&gt;&lt;P&gt;2 2004 A 484848&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; want;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if _N_ = &lt;STRONG&gt;1&lt;/STRONG&gt; then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; if &lt;STRONG&gt;0&lt;/STRONG&gt; then set test;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; declare hash h(dataset: "test(where=(not missing(item2999))keep=code year_ item2999");&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.defineKey('code','year_');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.defineData('item2999');&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.defineDone();&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp; end;&lt;/P&gt;&lt;P&gt;set test;&lt;/P&gt;&lt;P&gt;if missing(item2999) then h.find();&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Naveen Srinivasan&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;PS if you are familiar with Hashes and know how to maintain and modify, you'll be fine otherwise just ignore. Cheers&lt;/P&gt;</description>
      <pubDate>Sun, 23 Jul 2017 00:23:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Replacing-the-value-of-duplicates-in-panel-data/m-p/378482#M90963</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-07-23T00:23:48Z</dc:date>
    </item>
  </channel>
</rss>

