<?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: By-group --  correct values in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135890#M36705</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;While there is no substitute for proper cleaning of defective data, a shortcut approach would be to take the most common combination of values to be the "correct" set and apply those to your data.&amp;nbsp; There is no guarantee that this will be correct but the "errors" should be spread across the wide variety of ways it is possible to be wrong so the valid data is anticipated to be the most populous.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In your particular instance it mihgt be more appropriate to hande id1 and var1 separately from id2 and var2 but this might be food for thought:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; proc sql noprint; &lt;/P&gt;&lt;P&gt;/*First create distinct combinations of id1, id2, var1 and var2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.groups&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select distinct&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1, id2, var1, var2, count(*) as counter &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.have&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,2,3,4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*Then select the most popular combination (on the assumption that this is the one most likely to be correct)*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.best_group&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1, id2, var1, var2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.groups&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; having&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter=max(counter)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*Finally join the original dataset back to the "best" grouping*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.want&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.id1, h.id2, h.Transaction_Date,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bg.var1, bg.var2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.have as h,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.best_group as bg&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.id1 = bg.id1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.id2 = bg.id2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 04 Dec 2014 18:13:55 GMT</pubDate>
    <dc:creator>zenjamie</dc:creator>
    <dc:date>2014-12-04T18:13:55Z</dc:date>
    <item>
      <title>By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135882#M36697</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 am grouping by ID1 and ID2 but Var1 and Var2 contain defect data.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would like to correct as shown on the WANT&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;(Var1 and Var2 values may be ubder different ID1 and ID2)&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanking you in advance&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Nikos&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="0" cellpadding="0" cellspacing="0" style="width: 564px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD class="xl70" colspan="5" height="20" width="372"&gt;HAVE&lt;/TD&gt;&lt;TD class="xl70" colspan="2" width="128"&gt;WANT&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD class="xl65" height="20"&gt;ID1&lt;/TD&gt;&lt;TD class="xl65"&gt;ID2&lt;/TD&gt;&lt;TD class="xl65"&gt;Transaction_Date&lt;/TD&gt;&lt;TD class="xl65"&gt;Var1&lt;/TD&gt;&lt;TD class="xl65"&gt;Var2&lt;/TD&gt;&lt;TD class="xl65"&gt;Var1&lt;/TD&gt;&lt;TD class="xl65"&gt;Var2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;100&lt;/TD&gt;&lt;TD align="right"&gt;200&lt;/TD&gt;&lt;TD class="xl65"&gt;30MAR2012&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD class="xl66"&gt;d_hot&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;hot&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20"&gt;100&lt;/TD&gt;&lt;TD align="right" class="xl67"&gt;200&lt;/TD&gt;&lt;TD class="xl68"&gt;30MAR2012&lt;/TD&gt;&lt;TD class="xl67"&gt;green&lt;/TD&gt;&lt;TD class="xl67"&gt;hot&lt;/TD&gt;&lt;TD class="xl67"&gt;green&lt;/TD&gt;&lt;TD class="xl67"&gt;hot&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right"&gt;455&lt;/TD&gt;&lt;TD class="xl65"&gt;05JUL2012&lt;/TD&gt;&lt;TD&gt;red &lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;TD&gt;red &lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right"&gt;455&lt;/TD&gt;&lt;TD class="xl65"&gt;05JUL2012&lt;/TD&gt;&lt;TD class="xl66"&gt;red_a&lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;TD&gt;red &lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right"&gt;455&lt;/TD&gt;&lt;TD class="xl65"&gt;15SEP2012&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right" class="xl67"&gt;455&lt;/TD&gt;&lt;TD class="xl68"&gt;15SEP2012&lt;/TD&gt;&lt;TD class="xl67"&gt;red &lt;/TD&gt;&lt;TD class="xl67"&gt;cpp&lt;/TD&gt;&lt;TD class="xl67"&gt;red &lt;/TD&gt;&lt;TD class="xl67"&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;100&lt;/TD&gt;&lt;TD align="right"&gt;200&lt;/TD&gt;&lt;TD class="xl65"&gt;28JAN2013&lt;/TD&gt;&lt;TD class="xl66"&gt;green_c&lt;/TD&gt;&lt;TD&gt;hot&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;hot&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20"&gt;100&lt;/TD&gt;&lt;TD align="right" class="xl67"&gt;200&lt;/TD&gt;&lt;TD class="xl68"&gt;28JAN2013&lt;/TD&gt;&lt;TD class="xl67"&gt;green&lt;/TD&gt;&lt;TD class="xl67"&gt;hot&lt;/TD&gt;&lt;TD class="xl67"&gt;green&lt;/TD&gt;&lt;TD class="xl67"&gt;hot&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right"&gt;455&lt;/TD&gt;&lt;TD class="xl65"&gt;03JUL2013&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" class="xl67" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right" class="xl67"&gt;455&lt;/TD&gt;&lt;TD class="xl68"&gt;05JUL2013&lt;/TD&gt;&lt;TD class="xl67"&gt;red &lt;/TD&gt;&lt;TD class="xl69"&gt;vvvv&lt;/TD&gt;&lt;TD class="xl67"&gt;red&lt;/TD&gt;&lt;TD class="xl67"&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right"&gt;455&lt;/TD&gt;&lt;TD class="xl65"&gt;03JUL2013&lt;/TD&gt;&lt;TD class="xl66"&gt;red_n&lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;TD&gt;red &lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD align="right" height="20"&gt;300&lt;/TD&gt;&lt;TD align="right"&gt;455&lt;/TD&gt;&lt;TD class="xl65"&gt;05JUL2013&lt;/TD&gt;&lt;TD&gt;red &lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;TD&gt;red &lt;/TD&gt;&lt;TD&gt;cold&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 15:01:54 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135882#M36697</guid>
      <dc:creator>Nikos</dc:creator>
      <dc:date>2014-12-04T15:01:54Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135883#M36698</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;Could you clarify exactly, with code/test data what you are trying to do.&amp;nbsp; It looks like the data in var_1 actually has more than one distinct, i.e. "green" is not the same as "green_c" so a grouping would still bring these out, however if you are after distincts on ID1/2 then do a pros sort nodupkey.&amp;nbsp; Question then is what do you want to get back.&amp;nbsp; You could also standardize your var1/2 data before grouping.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 15:09:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135883#M36698</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-12-04T15:09:02Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135884#M36699</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I am trying to "correct" Var1 and Var2&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The "correct" pairs are (red, cold) (green hot) that should replace the "defect" ones&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying to solve that with proc sql find the Min and Max for each group by the proc sort the distinct cases and get the "dupout" dataset so I can remerge it back to the original and "correct" the values but the code becomes two long&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I wonder whether there is a shortcut to that.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you &lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 15:15:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135884#M36699</guid>
      <dc:creator>Nikos</dc:creator>
      <dc:date>2014-12-04T15:15:35Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135885#M36700</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;This should convert var1/2 to only have the first part of the string, the distinct will then remove any duplicates.&lt;/P&gt;&lt;P&gt;proc sql;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table WANT as&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; distinct&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ID2,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scan(VAR1,1,"_") as VAR1,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; scan(VAR2,1,"_") as VAR2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; HAVE;&lt;/P&gt;&lt;P&gt;quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 15:20:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135885#M36700</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-12-04T15:20:29Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135886#M36701</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Ιt seems that SCAN function does not work since "defect" values may include various kinds of "defection" i.e. vvvv where it should have been cold&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 15:46:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135886#M36701</guid>
      <dc:creator>Nikos</dc:creator>
      <dc:date>2014-12-04T15:46:07Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135887#M36702</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;So you are going to need to do some data cleaning prior to the step then.&amp;nbsp; There's no magic "clean my data" button.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 16:57:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135887#M36702</guid>
      <dc:creator>RW9</dc:creator>
      <dc:date>2014-12-04T16:57:35Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135888#M36703</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Are the distinct values you expect to see only green and red, hot or cold? if so:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;if index(var1,"green")&amp;gt;0 then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var1 = 'green'; var2 = 'hot';&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else if index(var1,"red")&amp;gt;0then do;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var1 = 'red; var2 = 'cold';&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;...&lt;/P&gt;&lt;P&gt;proc sort data=... nodupkey; by id1 id2; run;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 17:33:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135888#M36703</guid>
      <dc:creator>nathan_owens</dc:creator>
      <dc:date>2014-12-04T17:33:37Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135889#M36704</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;For clean up, how about:&lt;/P&gt;&lt;P&gt;1) use proc sql to create a list of distinct values for Var1 &lt;/P&gt;&lt;P&gt;2) use data step to detect and translate defective values, write the corresponding&amp;nbsp; desired value to a new var&lt;/P&gt;&lt;P&gt;3) merge the translation table with the original table (by the original var1 values)&lt;/P&gt;&lt;P&gt;The result of merge should give you the original vars and plus your new alternative side by side.&amp;nbsp; repeat for var2.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 17:58:21 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135889#M36704</guid>
      <dc:creator>ChemoDb</dc:creator>
      <dc:date>2014-12-04T17:58:21Z</dc:date>
    </item>
    <item>
      <title>Re: By-group --  correct values</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135890#M36705</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;While there is no substitute for proper cleaning of defective data, a shortcut approach would be to take the most common combination of values to be the "correct" set and apply those to your data.&amp;nbsp; There is no guarantee that this will be correct but the "errors" should be spread across the wide variety of ways it is possible to be wrong so the valid data is anticipated to be the most populous.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In your particular instance it mihgt be more appropriate to hande id1 and var1 separately from id2 and var2 but this might be food for thought:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; proc sql noprint; &lt;/P&gt;&lt;P&gt;/*First create distinct combinations of id1, id2, var1 and var2*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.groups&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select distinct&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1, id2, var1, var2, count(*) as counter &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.have&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,2,3,4&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*Then select the most popular combination (on the assumption that this is the one most likely to be correct)*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.best_group&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; id1, id2, var1, var2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.groups&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; group by&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1,2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; having&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; counter=max(counter)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; &lt;/P&gt;&lt;P&gt;/*Finally join the original dataset back to the "best" grouping*/&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; create table&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.want&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; as select&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.id1, h.id2, h.Transaction_Date,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; bg.var1, bg.var2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; from &lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.have as h,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; work.best_group as bg&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; where&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.id1 = bg.id1&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; and&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; h.id2 = bg.id2&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;/P&gt;&lt;P&gt;&amp;nbsp; quit;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 04 Dec 2014 18:13:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/By-group-correct-values/m-p/135890#M36705</guid>
      <dc:creator>zenjamie</dc:creator>
      <dc:date>2014-12-04T18:13:55Z</dc:date>
    </item>
  </channel>
</rss>

