<?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: update column value in existing table with condition in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446532#M112041</link>
    <description>thank you</description>
    <pubDate>Sun, 18 Mar 2018 04:22:41 GMT</pubDate>
    <dc:creator>leonzheng</dc:creator>
    <dc:date>2018-03-18T04:22:41Z</dc:date>
    <item>
      <title>update column value in existing table with condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446515#M112030</link>
      <description>&lt;P&gt;I want to update value of one column in an existing table by some condition. Please help,&amp;nbsp;table 'test' looks like below:&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; Group1&amp;nbsp; &amp;nbsp; Value1&amp;nbsp; &amp;nbsp; Group2&amp;nbsp; &amp;nbsp; Value2&amp;nbsp; &amp;nbsp; Comment&lt;/P&gt;&lt;P&gt;01&amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bbb&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;2&lt;/P&gt;&lt;P&gt;02&amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bbb&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;1&lt;/P&gt;&lt;P&gt;03&amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; bbb&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;4&lt;/P&gt;&lt;P&gt;04&amp;nbsp; &amp;nbsp; &amp;nbsp;cc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&lt;/P&gt;&lt;P&gt;05&amp;nbsp; &amp;nbsp; &amp;nbsp;cc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&lt;/P&gt;&lt;P&gt;06&amp;nbsp; &amp;nbsp; &amp;nbsp;cc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The idea is add value to Comment, compare Value1 or Value2 by corresponding group, the row with the lowest value will have 'Y' in comment, else get a 'N'. For example, row ID=01 has value1=1 which is lowest in Group1=aaa, then comment='Y'; row ID=02 has value1=2 not the lowest in aaa, but it has Value2=1, the lowest in Group2=bbb, so comment='Y'.&lt;/P&gt;&lt;P&gt;The updated table 'want' would be like below:&lt;/P&gt;&lt;P&gt;ID&amp;nbsp; &amp;nbsp; &amp;nbsp;Group1&amp;nbsp; &amp;nbsp; &amp;nbsp; Value1&amp;nbsp; &amp;nbsp; &amp;nbsp; Group2&amp;nbsp; &amp;nbsp; &amp;nbsp;Value2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Comment&lt;/P&gt;&lt;P&gt;01&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bbb&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;/P&gt;&lt;P&gt;02&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bbb&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;/P&gt;&lt;P&gt;03&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;aaa&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 3&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bbb&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N&lt;/P&gt;&lt;P&gt;04&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 2&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 6&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;N&lt;/P&gt;&lt;P&gt;05&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 1&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;d&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 4&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;/P&gt;&lt;P&gt;06&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;cc&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 5&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;e&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; 7&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Y&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I do it in SAS?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks,&lt;/P&gt;&lt;P&gt;Leon&lt;/P&gt;</description>
      <pubDate>Sun, 18 Mar 2018 00:50:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446515#M112030</guid>
      <dc:creator>leonzheng</dc:creator>
      <dc:date>2018-03-18T00:50:13Z</dc:date>
    </item>
    <item>
      <title>Re: update column value in existing table with condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446516#M112031</link>
      <description>&lt;P&gt;The request seems a little unusual, because the groupings in Group 1 are different than the groupings in Group 2.&amp;nbsp; But assuming you want what you described, it will take two passes through the data as a result:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data temp;&lt;/P&gt;
&lt;P&gt;do until (last.group1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by group1 notsorted;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;minval = min(minval, value1);&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;do until (last.group1);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by group1 notsorted;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if value1=minval then comment='Y';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;else comment = 'N';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop minval;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;That completes part of the task, assigning COMMENT based on GROUP1 and VALUE1.&amp;nbsp; Next, change the value of COMMENT based on the GROUP2 and VALUE2 groupings:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;do until (last.group2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by group2 notsorted;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;minval = min(minval, value2);&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;do until (last.group2);&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;by group2 notsorted;&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;if value2=minval then comment='Y';&lt;/P&gt;
&lt;P&gt;&amp;nbsp; &amp;nbsp;output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop minval;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;All of this assumes that your data is already grouped ... all identical GROUP1 values appear in a sequence, and all identical GROUP2 values appear in a sequence.&amp;nbsp; If that's not the case, some sorting may also be needed.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;It's intentional that the word ELSE appears in the top DATA step but not in the bottom one.&lt;/P&gt;</description>
      <pubDate>Sun, 18 Mar 2018 01:01:30 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446516#M112031</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-03-18T01:01:30Z</dc:date>
    </item>
    <item>
      <title>Re: update column value in existing table with condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446517#M112032</link>
      <description>Thank you Astounding for the quick reply. I guess my data is not sorted yet. So how should I sort Group1 and Group2 since they cannot be both perfectly sorted</description>
      <pubDate>Sun, 18 Mar 2018 01:08:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446517#M112032</guid>
      <dc:creator>leonzheng</dc:creator>
      <dc:date>2018-03-18T01:08:02Z</dc:date>
    </item>
    <item>
      <title>Re: update column value in existing table with condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446520#M112033</link>
      <description>&lt;P&gt;Sort by GROUP1 before the first DATA step.&amp;nbsp; Then sort by GROUP2 before the second DATA step.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;As long as you are going to sort the data set twice, you might as well take advantage of that and simplify the programming.&amp;nbsp; At least I think this looks simpler.&amp;nbsp; For example:&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 group1 value1;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;data temp;&lt;/P&gt;
&lt;P&gt;set have;&lt;/P&gt;
&lt;P&gt;by group1;&lt;/P&gt;
&lt;P&gt;if first.group1 then minval = value1;&lt;/P&gt;
&lt;P&gt;retain minval;&lt;/P&gt;
&lt;P&gt;if value1=minval then comment='Y';&lt;/P&gt;
&lt;P&gt;else comment='N';&lt;/P&gt;
&lt;P&gt;drop minval;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc sort data=temp;&lt;/P&gt;
&lt;P&gt;by group2 value2;&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 temp;&lt;/P&gt;
&lt;P&gt;by group2;&lt;/P&gt;
&lt;P&gt;if first.group2 then minval = value2;&lt;/P&gt;
&lt;P&gt;if value2=minval then comment='Y';&lt;/P&gt;
&lt;P&gt;drop minval;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Sun, 18 Mar 2018 07:09:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446520#M112033</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-03-18T07:09:26Z</dc:date>
    </item>
    <item>
      <title>Re: update column value in existing table with condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446523#M112036</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input ID $    Group1 $   Value1    Group2 $   Value2 ;
datalines;
01     aaa            1            bbb           2
02     aaa            2            bbb           1
03     aaa            3            bbb           4
04     cc              2             d              6
05     cc              1             d              4
06     cc              5             e              7
;

proc sql;
create table want as
select *, case when min(value1)=value1 or min(value2)=value2 then 'Y' else 'N' end as Comment
from have
group by  Group1,Group2
order by id;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 18 Mar 2018 03:17:47 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446523#M112036</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-03-18T03:17:47Z</dc:date>
    </item>
    <item>
      <title>Re: update column value in existing table with condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446532#M112041</link>
      <description>thank you</description>
      <pubDate>Sun, 18 Mar 2018 04:22:41 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/update-column-value-in-existing-table-with-condition/m-p/446532#M112041</guid>
      <dc:creator>leonzheng</dc:creator>
      <dc:date>2018-03-18T04:22:41Z</dc:date>
    </item>
  </channel>
</rss>

