<?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: sas - mean calculation by group and condition in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/738608#M230434</link>
    <description>&lt;P&gt;What is your question?&lt;/P&gt;</description>
    <pubDate>Mon, 03 May 2021 14:47:14 GMT</pubDate>
    <dc:creator>PaigeMiller</dc:creator>
    <dc:date>2021-05-03T14:47:14Z</dc:date>
    <item>
      <title>sas - mean calculation by group and condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/738599#M230426</link>
      <description>&lt;P&gt;I need to calculate outlier (2 standard deviation). To get the desire output, I want to calculate mean and standard deviation by using the group and condition.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If condition match, I want to assign that value for group (or I want to use that value to calculate lower and upper limit)&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;Lower_limit = mean - 2 * sd&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;Upper_limit = mean + 2 * sd&lt;/P&gt;&lt;P&gt;If var2 is less than lower limit or greater than upper limit than I want to delete that observation from my dataset.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;This is what I want:&amp;nbsp;&lt;/P&gt;&lt;P&gt;var1&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;var1&lt;/TD&gt;&lt;TD&gt;var2&lt;/TD&gt;&lt;TD&gt;mean&lt;/TD&gt;&lt;TD&gt;sd&lt;/TD&gt;&lt;TD&gt;lower_limit&lt;/TD&gt;&lt;TD&gt;upper_limit&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;3.4&lt;/TD&gt;&lt;TD&gt;3.97&lt;/TD&gt;&lt;TD&gt;-4.54&lt;/TD&gt;&lt;TD&gt;11.34&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;10&lt;/TD&gt;&lt;TD&gt;3.4&lt;/TD&gt;&lt;TD&gt;3.97&lt;/TD&gt;&lt;TD&gt;-4.54&lt;/TD&gt;&lt;TD&gt;11.34&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;3.4&lt;/TD&gt;&lt;TD&gt;3.97&lt;/TD&gt;&lt;TD&gt;-4.54&lt;/TD&gt;&lt;TD&gt;11.34&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;3.4&lt;/TD&gt;&lt;TD&gt;3.97&lt;/TD&gt;&lt;TD&gt;-4.54&lt;/TD&gt;&lt;TD&gt;11.34&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;3.4&lt;/TD&gt;&lt;TD&gt;3.97&lt;/TD&gt;&lt;TD&gt;-4.54&lt;/TD&gt;&lt;TD&gt;11.34&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;c&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;In this example, I do not have any demand less than lower limit or greater than upper limit. So I need to keep all observation.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data have;&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;input var1 var2;&amp;nbsp;&lt;/P&gt;&lt;P&gt;datalines;&amp;nbsp;&lt;/P&gt;&lt;P&gt;b 1&amp;nbsp;&lt;/P&gt;&lt;P&gt;b 10&amp;nbsp;&lt;/P&gt;&lt;P&gt;b 2&lt;/P&gt;&lt;P&gt;b 4&lt;/P&gt;&lt;P&gt;b 0&lt;/P&gt;&lt;P&gt;c 3&lt;/P&gt;&lt;P&gt;c 3&lt;/P&gt;&lt;P&gt;c 2&lt;/P&gt;&lt;P&gt;c 1&lt;/P&gt;&lt;P&gt;c 1&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;proc sql;&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;create table want as&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;select*, avg(var2) as mean format 10.3, std(var2) as sd format 10.3&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;from have&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;group by var1&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;having var2 &amp;gt; 4;&lt;/P&gt;&lt;P&gt;quit&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*cannot get the desire (same) value by group.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;*delete observations based on lower and upper limit creteria.&amp;nbsp;&lt;/P&gt;&lt;P&gt;data want;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;set want;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;lower_limit = mean - (2*sd);&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;upper_limit = mean + (2*sd);&amp;nbsp;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;if demand = . then output;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;if demand &amp;lt; lower_limit then delete;&lt;/P&gt;&lt;P class="lia-indent-padding-left-30px"&gt;if demand &amp;gt;&amp;nbsp; upper_limit then delete;&lt;/P&gt;&lt;P&gt;run;&lt;/P&gt;</description>
      <pubDate>Mon, 03 May 2021 14:04:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/738599#M230426</guid>
      <dc:creator>dht115</dc:creator>
      <dc:date>2021-05-03T14:04:52Z</dc:date>
    </item>
    <item>
      <title>Re: sas - mean calculation by group and condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/738608#M230434</link>
      <description>&lt;P&gt;What is your question?&lt;/P&gt;</description>
      <pubDate>Mon, 03 May 2021 14:47:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/738608#M230434</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-05-03T14:47:14Z</dc:date>
    </item>
    <item>
      <title>Re: sas - mean calculation by group and condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/739744#M230931</link>
      <description>&lt;P&gt;How to calculate mean and standard deviation based on the condition by group?&lt;/P&gt;</description>
      <pubDate>Fri, 07 May 2021 11:47:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/739744#M230931</guid>
      <dc:creator>dht115</dc:creator>
      <dc:date>2021-05-07T11:47:59Z</dc:date>
    </item>
    <item>
      <title>Re: sas - mean calculation by group and condition</title>
      <link>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/739753#M230936</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have; 
input group $ var2; 
datalines; 
b 1 
b 10 
b 2
b 4
b 0
c 3
c 3
c 2
c 1
c 1
;
proc summary nway data=have;
    class group;
    var var2;
    output out=_stats_ mean=mean stddev=sd;
run;
data want;
    if _n_=1 then set _stats_(drop=_:);
    set have;
    /* If you want the confidence limits, you type the formula here */
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 07 May 2021 12:50:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/sas-mean-calculation-by-group-and-condition/m-p/739753#M230936</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2021-05-07T12:50:48Z</dc:date>
    </item>
  </channel>
</rss>

