<?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: Averaging based on string in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457366#M115957</link>
    <description>&lt;P&gt;There's a lot missing from your question.&amp;nbsp; For example, what if &amp;amp;PSV contains AMECS_CP but that is the only occurrence of AMECS.&amp;nbsp; Should AMECS_SP and AMECS_MI be omitted from TEST3?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Rather than try to answer this type of question (and that's not the only one), I'll give you a piece of the answer.&amp;nbsp; To get TEST3:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc summary data=have nway;&lt;/P&gt;
&lt;P&gt;var AMECS_: ;&lt;/P&gt;
&lt;P&gt;class memid;&lt;/P&gt;
&lt;P&gt;output out=test3 (drop=_type_ _freq_) mean=;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You may need to modify this slightly, depending on how you further define the requirements.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have control over the incoming macro variable(s), it would be more useful to have two variables (space-delimited):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let amecs_list = AMECS_CP AMECS_SP AMECS_MI;&lt;/P&gt;
&lt;P&gt;%let discs_list = DISC_CP DISC_SP DISC_MI;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 25 Apr 2018 15:37:03 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2018-04-25T15:37:03Z</dc:date>
    <item>
      <title>Averaging based on string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457344#M115944</link>
      <description>&lt;P&gt;Hi ,&lt;/P&gt;&lt;P&gt;I have a string&lt;/P&gt;&lt;P&gt;%let Psv = DISC_CP|DISC_SP|DISC_MI|AMECS_CP|AMECS_SP|AMECS_MI;&lt;/P&gt;&lt;P&gt;So I have a dataset test1 and wanted to create test2 and test3&lt;/P&gt;&lt;P&gt;Test1&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;MEMID&lt;/TD&gt;&lt;TD&gt;ITEMID&lt;/TD&gt;&lt;TD&gt;DISC_CP&lt;/TD&gt;&lt;TD&gt;DISC_SP&lt;/TD&gt;&lt;TD&gt;DISC_MI&lt;/TD&gt;&lt;TD&gt;AMECS_CP&lt;/TD&gt;&lt;TD&gt;AMECS_SP&lt;/TD&gt;&lt;TD&gt;AMECS_MI&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;501489&lt;/TD&gt;&lt;TD&gt;25689&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;3.3&lt;/TD&gt;&lt;TD&gt;6.7&lt;/TD&gt;&lt;TD&gt;2.2&lt;/TD&gt;&lt;TD&gt;5.6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;501489&lt;/TD&gt;&lt;TD&gt;23287&lt;/TD&gt;&lt;TD&gt;2.3&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;3.3&lt;/TD&gt;&lt;TD&gt;6.7&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;5.6&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;501489&lt;/TD&gt;&lt;TD&gt;26625&lt;/TD&gt;&lt;TD&gt;2.6&lt;/TD&gt;&lt;TD&gt;1.3&lt;/TD&gt;&lt;TD&gt;3.3&lt;/TD&gt;&lt;TD&gt;6.8&lt;/TD&gt;&lt;TD&gt;2.4&lt;/TD&gt;&lt;TD&gt;5.3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;702569&lt;/TD&gt;&lt;TD&gt;32589&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;TD&gt;1.4&lt;/TD&gt;&lt;TD&gt;4.2&lt;/TD&gt;&lt;TD&gt;8.9&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;702569&lt;/TD&gt;&lt;TD&gt;32291&lt;/TD&gt;&lt;TD&gt;3.5&lt;/TD&gt;&lt;TD&gt;1.4&lt;/TD&gt;&lt;TD&gt;4.2&lt;/TD&gt;&lt;TD&gt;8.7&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;3.1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;702569&lt;/TD&gt;&lt;TD&gt;38896&lt;/TD&gt;&lt;TD&gt;2.1&lt;/TD&gt;&lt;TD&gt;1.5&lt;/TD&gt;&lt;TD&gt;4.2&lt;/TD&gt;&lt;TD&gt;8.3&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;4.9&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So if the string &amp;amp;Psv contains&amp;nbsp; DISC then it should create Test2 dataset which looks like below group by&lt;/P&gt;&lt;P&gt;MEMID AND ITEMID&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;MEMID&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;ITEMID&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;DISC_CP&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;DISC_SP&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;DISC_MI&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;501489&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;25689&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;2.3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;1.2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;3.3&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;501489&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;26625&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;2.6&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;1.3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;FONT color="#000000" face="Arial" size="3"&gt;3.3&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;So if the string &amp;amp;Psv contains&amp;nbsp;&amp;nbsp;AMECS &amp;nbsp;then it should create Test3 &amp;nbsp;dataset which looks like below group by&lt;/P&gt;&lt;P&gt;MEMID only&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;MEMID&lt;/TD&gt;&lt;TD&gt;AMECS_CP&lt;/TD&gt;&lt;TD&gt;AMECS_SP&lt;/TD&gt;&lt;TD&gt;AMECS_MI&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;501489&lt;/TD&gt;&lt;TD&gt;6.73333&lt;/TD&gt;&lt;TD&gt;2.3333&lt;/TD&gt;&lt;TD&gt;5.5&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;702569&lt;/TD&gt;&lt;TD&gt;8.63333&lt;/TD&gt;&lt;TD&gt;1.2&lt;/TD&gt;&lt;TD&gt;3.7&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Can anyone please help&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Wed, 25 Apr 2018 15:12:22 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457344#M115944</guid>
      <dc:creator>jhh197</dc:creator>
      <dc:date>2018-04-25T15:12:22Z</dc:date>
    </item>
    <item>
      <title>Re: Averaging based on string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457352#M115949</link>
      <description>&lt;P&gt;What if it contains both? Like in your example?&lt;/P&gt;</description>
      <pubDate>Wed, 25 Apr 2018 15:20:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457352#M115949</guid>
      <dc:creator>PeterClemmensen</dc:creator>
      <dc:date>2018-04-25T15:20:00Z</dc:date>
    </item>
    <item>
      <title>Re: Averaging based on string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457361#M115955</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;%let Psv = DISC_CP|DISC_SP|DISC_MI|AMECS_CP|AMECS_SP|AMECS_MI;
%macro test; 
      %if %index(&amp;amp;Psv,DISC)&amp;gt;0 %then %str(keep=MEMID	ITEMID DISC:);
	  %else %if %index(&amp;amp;Psv,AMECS)&amp;gt;0 %then %str(keep= MEMID	ITEMID AMECS:);
%mend;


data want;
set have(%test);

run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 25 Apr 2018 15:28:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457361#M115955</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-04-25T15:28:10Z</dc:date>
    </item>
    <item>
      <title>Re: Averaging based on string</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457366#M115957</link>
      <description>&lt;P&gt;There's a lot missing from your question.&amp;nbsp; For example, what if &amp;amp;PSV contains AMECS_CP but that is the only occurrence of AMECS.&amp;nbsp; Should AMECS_SP and AMECS_MI be omitted from TEST3?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Rather than try to answer this type of question (and that's not the only one), I'll give you a piece of the answer.&amp;nbsp; To get TEST3:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;proc summary data=have nway;&lt;/P&gt;
&lt;P&gt;var AMECS_: ;&lt;/P&gt;
&lt;P&gt;class memid;&lt;/P&gt;
&lt;P&gt;output out=test3 (drop=_type_ _freq_) mean=;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;You may need to modify this slightly, depending on how you further define the requirements.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have control over the incoming macro variable(s), it would be more useful to have two variables (space-delimited):&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;%let amecs_list = AMECS_CP AMECS_SP AMECS_MI;&lt;/P&gt;
&lt;P&gt;%let discs_list = DISC_CP DISC_SP DISC_MI;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 25 Apr 2018 15:37:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Averaging-based-on-string/m-p/457366#M115957</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2018-04-25T15:37:03Z</dc:date>
    </item>
  </channel>
</rss>

