<?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: proc sql, mode within groups in SAS Procedures</title>
    <link>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279128#M58970</link>
    <description>&lt;P&gt;I'm not aware of any mode function (unfortunately).&lt;/P&gt;
&lt;P&gt;But you can calculate the mode by using the proc univariate.&lt;/P&gt;
&lt;P&gt;Not sure though if can&amp;nbsp;calculate all your measures in one go.&lt;/P&gt;</description>
    <pubDate>Tue, 21 Jun 2016 19:37:42 GMT</pubDate>
    <dc:creator>LinusH</dc:creator>
    <dc:date>2016-06-21T19:37:42Z</dc:date>
    <item>
      <title>proc sql, mode within groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279119#M58969</link>
      <description>&lt;P&gt;I need to find the most frequent level of character variables by group, and the sum of several numeric variables by the same group. If the most frequent level is not unique, I would like the last level with in the group (the data is sorted). Here is an example of what I want to acheive:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Original data:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;city&lt;/TD&gt;&lt;TD&gt;color&lt;/TD&gt;&lt;TD&gt;numeric_variable&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;New York&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;LA&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;New York&lt;/TD&gt;&lt;TD&gt;yellow&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;LA&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;LA&lt;/TD&gt;&lt;TD&gt;red&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;yellow&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;New York&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;yellow&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;yellow&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;green&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired outcome:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;id&lt;/TD&gt;&lt;TD&gt;city&lt;/TD&gt;&lt;TD&gt;color&lt;/TD&gt;&lt;TD&gt;sum&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;9&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;456&lt;/TD&gt;&lt;TD&gt;LA&lt;/TD&gt;&lt;TD&gt;blue&lt;/TD&gt;&lt;TD&gt;13&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;789&lt;/TD&gt;&lt;TD&gt;Seattle&lt;/TD&gt;&lt;TD&gt;yellow&lt;/TD&gt;&lt;TD&gt;16&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;For the sum, using group by id and SUM() within PROC SQL works well. &amp;nbsp;Is there a MODE function within PROC SQL?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am using Enterprise Guide version&amp;nbsp;5.1 (5.100.0.12019) (32-bit).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Tue, 21 Jun 2016 19:15:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279119#M58969</guid>
      <dc:creator>A_S</dc:creator>
      <dc:date>2016-06-21T19:15:17Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql, mode within groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279128#M58970</link>
      <description>&lt;P&gt;I'm not aware of any mode function (unfortunately).&lt;/P&gt;
&lt;P&gt;But you can calculate the mode by using the proc univariate.&lt;/P&gt;
&lt;P&gt;Not sure though if can&amp;nbsp;calculate all your measures in one go.&lt;/P&gt;</description>
      <pubDate>Tue, 21 Jun 2016 19:37:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279128#M58970</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2016-06-21T19:37:42Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql, mode within groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279194#M58976</link>
      <description>&lt;P&gt;Well it can be done in SQL but it ain't straightforward&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data a;
input id city &amp;amp;:$20. color :$8.	num;
datalines;
123  New York  blue  4
123  LA  blue  3
123  Seattle  green  2
456  New York  yellow  3
456  LA  green  2
456  LA  red  3
456  Seattle  blue  5
789  Seattle  yellow  2
789  New York  green  3
789  Seattle  yellow  5
789  Seattle  yellow  2
789  Seattle  green  4
;

data T;
set a;
order = _n_;
run;

proc sql;
create table cityModes as
select id, city
from
    (select id, city, last
    from
        (select id, city, count(*) as n, max(order) as last
        from T
        group by id, city)
    group by id
    having n = max(n))
group by id
having last=max(last); 

create table colorModes as
select id, color
from
    (select id, color, last
    from
        (select id, color, count(*) as n, max(order) as last
        from T
        group by id, color)
    group by id
    having n = max(n))
group by id
having last=max(last); 

create table want as
select T.id, a.city, b.color, sum(T.num) as sum
from 
    T inner join 
    cityModes as a on T.id=a.id inner join 
    colorModes as b on a.id=b.id
group by T.id, a.city, b.color;
select * from want;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 22 Jun 2016 03:27:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/279194#M58976</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2016-06-22T03:27:29Z</dc:date>
    </item>
    <item>
      <title>Re: proc sql, mode within groups</title>
      <link>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/341196#M63284</link>
      <description>&lt;P&gt;Thank you!&lt;/P&gt;</description>
      <pubDate>Wed, 15 Mar 2017 14:13:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Procedures/proc-sql-mode-within-groups/m-p/341196#M63284</guid>
      <dc:creator>A_S</dc:creator>
      <dc:date>2017-03-15T14:13:29Z</dc:date>
    </item>
  </channel>
</rss>

