<?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: How to filter out using multiple keywords from a group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555874#M154761</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    input name $ season $ activity $;
    cards;
A	1	x
A	1	y
A	1	z
A	1	t
A	2	y
A	2	u
A	3	x
B	1	u
B	1	v
B	2	r
B	2	x
B	2	y
B	3	k
B	3	j
;
run;

proc sql noprint;
    CREATE TABLE want AS
    SELECT *, CASE WHEN (sum(activity="x") AND sum(activity="y")) THEN "YES" ELSE "NO" END AS Flag format=$3.
    FROM have
    GROUP BY name, season
    ;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 03 May 2019 09:45:52 GMT</pubDate>
    <dc:creator>gamotte</dc:creator>
    <dc:date>2019-05-03T09:45:52Z</dc:date>
    <item>
      <title>How to filter out using multiple keywords from a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555869#M154758</link>
      <description>&lt;P&gt;I have a data that has activities each person performs during a season -&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;TD&gt;Season&lt;/TD&gt;&lt;TD&gt;Activity&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;z&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;t&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;u&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;x&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;u&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;v&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;r&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;x&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;y&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;k&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;B&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;j&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;If a person has activity&amp;nbsp; x &amp;amp; y&amp;nbsp; in season 1 then I want all his rows for the first season to have a flag yes-&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Name&lt;/TD&gt;&lt;TD&gt;Season&lt;/TD&gt;&lt;TD&gt;Disease&lt;/TD&gt;&lt;TD&gt;Flag&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;y&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;z&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;t&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;y&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;u&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;A&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;x&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;similarly I have different disease combination for different seasons and activity.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am unable to write an efficient code for this.&lt;/P&gt;&lt;P&gt;The code I have come up with is --&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;Create table activity_x as					
	Select a.*
	From table1 as a join (Select distinct person, season from table1 where activity= 'x') as b
	on a.person  = b.person and a.season= b.season
	order by person, season;
Quit;&lt;/CODE&gt;&lt;/PRE&gt;&lt;P&gt;This would give me a data-set with all information for person and seasons where atleast one activity in the season is x.&lt;/P&gt;&lt;P&gt;Similarly I would repeat for activity y and get a dataset.&lt;/P&gt;&lt;P&gt;Then find inner join of the two.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;But issue is that the activity code combinations are very complex&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;Any one of this list&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;and&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;Any one of this list&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;a&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;r&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;b+c&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;m&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;d+c&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;n&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;s+c&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;TD&gt;o&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;Is there any better way to do this?&lt;/P&gt;</description>
      <pubDate>Fri, 03 May 2019 09:20:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555869#M154758</guid>
      <dc:creator>SAS1918</dc:creator>
      <dc:date>2019-05-03T09:20:27Z</dc:date>
    </item>
    <item>
      <title>Re: How to filter out using multiple keywords from a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555874#M154761</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
    input name $ season $ activity $;
    cards;
A	1	x
A	1	y
A	1	z
A	1	t
A	2	y
A	2	u
A	3	x
B	1	u
B	1	v
B	2	r
B	2	x
B	2	y
B	3	k
B	3	j
;
run;

proc sql noprint;
    CREATE TABLE want AS
    SELECT *, CASE WHEN (sum(activity="x") AND sum(activity="y")) THEN "YES" ELSE "NO" END AS Flag format=$3.
    FROM have
    GROUP BY name, season
    ;
quit;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 03 May 2019 09:45:52 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555874#M154761</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2019-05-03T09:45:52Z</dc:date>
    </item>
    <item>
      <title>Re: How to filter out using multiple keywords from a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555880#M154764</link>
      <description>&lt;P&gt;Hi Could you please explain how sum function is working for categorical variables&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 03 May 2019 10:21:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555880#M154764</guid>
      <dc:creator>SAS1918</dc:creator>
      <dc:date>2019-05-03T10:21:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to filter out using multiple keywords from a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555883#M154766</link>
      <description>&lt;P&gt;(activity="x") implicitely defines a variable which is 1 when the condition is met and 0 otherwise.&lt;/P&gt;
&lt;P&gt;The sum function will compute the sum for this implicit variable for all observations belonging&lt;/P&gt;
&lt;P&gt;to the group specified by the GROUP BY clause, that is the sum per person/season.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So if sum(activity="x")&amp;gt;0, it means that at least one observation within the person/season group has&lt;/P&gt;
&lt;P&gt;the variable activity equals to x.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 03 May 2019 10:37:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/555883#M154766</guid>
      <dc:creator>gamotte</dc:creator>
      <dc:date>2019-05-03T10:37:42Z</dc:date>
    </item>
    <item>
      <title>Re: How to filter out using multiple keywords from a group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/556167#M154906</link>
      <description>&lt;P&gt;Thanks for the explanation.&lt;/P&gt;&lt;P&gt;But the issue is that I have multiple activity columns ( activity 1- activity 5) and within that I have about 30 combinations of activities for which I have to make 8-10 flag variables. Is there any other way to do this so that I dont have to write an extremely long code?&lt;/P&gt;</description>
      <pubDate>Sat, 04 May 2019 11:43:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-filter-out-using-multiple-keywords-from-a-group/m-p/556167#M154906</guid>
      <dc:creator>SAS1918</dc:creator>
      <dc:date>2019-05-04T11:43:36Z</dc:date>
    </item>
  </channel>
</rss>

