<?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 Treating negative values in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193365#M305025</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a few negative observations in my data and I want to replace them by the average of the pre &amp;amp; post values. I cannot use proc expand and hence, can you please suggest an alternate route?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Its urgent and hence, can you please get back asap?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;E.g. of data:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Market,Product,Date,Price&lt;/P&gt;&lt;P&gt;X,ZZZ,12/10/2020,15&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X,ZZZ,13/10/2020,17&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X,ZZZ,14/10/2020,-15&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X,ZZZ,15/10/2020,25&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;Nimish&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Wed, 04 Mar 2015 00:17:33 GMT</pubDate>
    <dc:creator>Nimish_Vaddiparti</dc:creator>
    <dc:date>2015-03-04T00:17:33Z</dc:date>
    <item>
      <title>Treating negative values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193365#M305025</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have a few negative observations in my data and I want to replace them by the average of the pre &amp;amp; post values. I cannot use proc expand and hence, can you please suggest an alternate route?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Its urgent and hence, can you please get back asap?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;E.g. of data:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Market,Product,Date,Price&lt;/P&gt;&lt;P&gt;X,ZZZ,12/10/2020,15&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X,ZZZ,13/10/2020,17&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X,ZZZ,14/10/2020,-15&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;X,ZZZ,15/10/2020,25&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;Regards,&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-size: 13.3333330154419px;"&gt;Nimish&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 00:17:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193365#M305025</guid>
      <dc:creator>Nimish_Vaddiparti</dc:creator>
      <dc:date>2015-03-04T00:17:33Z</dc:date>
    </item>
    <item>
      <title>Re: Treating negative values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193366#M305026</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Nimish,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Please try below code, check want2 , hope it helps you &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data have;&lt;/P&gt;&lt;P&gt;infile cards dlm=',';&lt;/P&gt;&lt;P&gt;input Market$ Product$ Date:ddmmyy10. Price;&lt;/P&gt;&lt;P&gt;if price &amp;lt;0 then price=.;&lt;/P&gt;&lt;P&gt;format date ddmmyy10.;&lt;/P&gt;&lt;P&gt;cards;&lt;/P&gt;&lt;P&gt;X,ZZZ,12/10/2020,15&lt;/P&gt;&lt;P&gt;X,ZZZ,13/10/2020,17&lt;/P&gt;&lt;P&gt;X,ZZZ,14/10/2020,-15&lt;/P&gt;&lt;P&gt;X,ZZZ,15/10/2020,25&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;create table want as select market,product,avg(price) as avg from have where price &amp;gt;0 group by market,product;&lt;/P&gt;&lt;P&gt;create table want2 as select a.*, coalesce(a.price,b.avg) as newprice from have as a left join want as b on a.market=b.market and a.product=b.product;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Jag&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 00:57:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193366#M305026</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2015-03-04T00:57:31Z</dc:date>
    </item>
    <item>
      <title>Re: Treating negative values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193367#M305027</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;When you say pre/post do you mean the value before and after the negative/missing value?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 03:32:04 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193367#M305027</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2015-03-04T03:32:04Z</dc:date>
    </item>
    <item>
      <title>Re: Treating negative values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193368#M305028</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Yes, Reeza&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 08:26:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193368#M305028</guid>
      <dc:creator>Nimish_Vaddiparti</dc:creator>
      <dc:date>2015-03-04T08:26:21Z</dc:date>
    </item>
    <item>
      <title>Re: Treating negative values</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193369#M305029</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;There's probably a very clever way to do it in sql, but I'm not much versed in that, so:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=have;&lt;/P&gt;&lt;P&gt;by market product date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data int1; /* keep previous price */&lt;/P&gt;&lt;P&gt;set have;&lt;/P&gt;&lt;P&gt;oldprice = lag(price);&lt;/P&gt;&lt;P&gt;if first.product then oldprice = .; /* no previous price */&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;proc sort data=int1;&lt;/P&gt;&lt;P&gt;by market product descending date;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data int2; /* keep following price */&lt;/P&gt;&lt;P&gt;set int1;&lt;/P&gt;&lt;P&gt;by market product;&lt;/P&gt;&lt;P&gt;newprice = lag(price);&lt;/P&gt;&lt;P&gt;if first.product then newprice = .;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;data want (drop=newprice oldprice); /* calculate averages */&lt;/P&gt;&lt;P&gt;set int1;&lt;/P&gt;&lt;P&gt;if price &amp;lt; 0 then price = (newprice + oldprice) / 2;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The steps could be optimized, but I kept each single step for clarity.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 04 Mar 2015 09:22:01 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Treating-negative-values/m-p/193369#M305029</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2015-03-04T09:22:01Z</dc:date>
    </item>
  </channel>
</rss>

