<?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: Data Selection in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279884#M56469</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"&lt;SPAN&gt;if that record(row) is unique (appears only once) grouped by Store_ID and Customer_ID."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;You mean&amp;nbsp;&lt;SPAN&gt;Store_ID and Customer_ID&amp;nbsp;appears only once, right?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards expandtabs truncover;
input Store_ID	Customer_Number	Product_Number	First_Choice	Second_Choice	Third_Choice;
cards;
1231	23345	102011	3	0	0
1231	23345	102333	0	0	1
1231	23345	102441	0	1	0
1231	24898	101457	0	0	1
1231	24898	149845	0	0	1
1354	28779	112786	1	2	0
1354	28779	122654	0	2	0
1354	28779	125234	0	0	1
1354	28779	145889	1	0	0
;
run;
data key;
set have;
if First_Choice&amp;gt;0 or Second_Choice&amp;gt;0;
run;

data want;
 if _n_=1 then do;
  if 0 then set key;
  declare hash h(dataset:'key');
  h.definekey('Store_ID','Customer_Number');
  h.definedone();
 end;
set have;

if First_Choice&amp;gt;0 or Second_Choice&amp;gt;0 or 
  (Third_Choice=1 and h.check() ne 0) then do;
  output;h.replace();
end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Fri, 24 Jun 2016 01:25:45 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2016-06-24T01:25:45Z</dc:date>
    <item>
      <title>Data Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279879#M56466</link>
      <description>&lt;P&gt;Hi....I have a dataset where I would like to select or keep only those records(rows) where either the First_Choice or Second_Choice is greater than zero (0) and only keep the records(rows) where the Third_Choice=1 if that record(row) is unique (appears only once) grouped by Store_ID and Customer_ID. Thanks.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="581"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="64"&gt;Store_ID&lt;/TD&gt;
&lt;TD width="130"&gt;Customer _Number&lt;/TD&gt;
&lt;TD width="114"&gt;Product_Number&lt;/TD&gt;
&lt;TD width="83"&gt;First_Choice&lt;/TD&gt;
&lt;TD width="102"&gt;Second_Choice&lt;/TD&gt;
&lt;TD width="88"&gt;Third_Choice&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;23345&lt;/TD&gt;
&lt;TD&gt;102011&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;23345&lt;/TD&gt;
&lt;TD&gt;102333&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;23345&lt;/TD&gt;
&lt;TD&gt;102441&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;24898&lt;/TD&gt;
&lt;TD&gt;101457&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;24898&lt;/TD&gt;
&lt;TD&gt;149845&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;112786&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;122654&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;125234&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;145889&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Want:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="577"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="60"&gt;Store_ID&lt;/TD&gt;
&lt;TD width="130"&gt;Customer _Number&lt;/TD&gt;
&lt;TD width="114"&gt;Product_Number&lt;/TD&gt;
&lt;TD width="83"&gt;First_Choice&lt;/TD&gt;
&lt;TD width="102"&gt;Second_Choice&lt;/TD&gt;
&lt;TD width="88"&gt;Third_Choice&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;23345&lt;/TD&gt;
&lt;TD&gt;102011&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;23345&lt;/TD&gt;
&lt;TD&gt;102441&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1231&lt;/TD&gt;
&lt;TD&gt;24898&lt;/TD&gt;
&lt;TD&gt;101457&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;112786&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;122654&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;1354&lt;/TD&gt;
&lt;TD&gt;28779&lt;/TD&gt;
&lt;TD&gt;145889&lt;/TD&gt;
&lt;TD&gt;1&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Fri, 24 Jun 2016 00:01:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279879#M56466</guid>
      <dc:creator>twildone</dc:creator>
      <dc:date>2016-06-24T00:01:55Z</dc:date>
    </item>
    <item>
      <title>Re: Data Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279884#M56469</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"&lt;SPAN&gt;if that record(row) is unique (appears only once) grouped by Store_ID and Customer_ID."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;You mean&amp;nbsp;&lt;SPAN&gt;Store_ID and Customer_ID&amp;nbsp;appears only once, right?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards expandtabs truncover;
input Store_ID	Customer_Number	Product_Number	First_Choice	Second_Choice	Third_Choice;
cards;
1231	23345	102011	3	0	0
1231	23345	102333	0	0	1
1231	23345	102441	0	1	0
1231	24898	101457	0	0	1
1231	24898	149845	0	0	1
1354	28779	112786	1	2	0
1354	28779	122654	0	2	0
1354	28779	125234	0	0	1
1354	28779	145889	1	0	0
;
run;
data key;
set have;
if First_Choice&amp;gt;0 or Second_Choice&amp;gt;0;
run;

data want;
 if _n_=1 then do;
  if 0 then set key;
  declare hash h(dataset:'key');
  h.definekey('Store_ID','Customer_Number');
  h.definedone();
 end;
set have;

if First_Choice&amp;gt;0 or Second_Choice&amp;gt;0 or 
  (Third_Choice=1 and h.check() ne 0) then do;
  output;h.replace();
end;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 24 Jun 2016 01:25:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279884#M56469</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2016-06-24T01:25:45Z</dc:date>
    </item>
    <item>
      <title>Re: Data Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279886#M56471</link>
      <description>&lt;P&gt;Hi Xia....thanks you for your quick response.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;"&lt;SPAN&gt;if that record(row) is unique (appears only once) grouped by Store_ID and Customer_ID."&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;You mean&amp;nbsp;&lt;SPAN&gt;Store_ID and Customer_ID&amp;nbsp;appears only once, right?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;What I meant was that a record(row) could be the unique grouped by Store_ID and Customer_ID with Third_Choice = 1, then that record(row) is to be kept. If not and all the entries for Third_Choice is equal to 1 for the same Store_ID and Customer_ID, then only 1 (anyone of how many records) of these records(rows) is kept. I hope that clarifies things a little better. Thanks.&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jun 2016 01:39:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279886#M56471</guid>
      <dc:creator>twildone</dc:creator>
      <dc:date>2016-06-24T01:39:51Z</dc:date>
    </item>
    <item>
      <title>Re: Data Selection</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279887#M56472</link>
      <description>&lt;P&gt;please try the DOW loop approach&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
	infile cards missover;
	input Store_ID Customer_Number Product_Number First_Choice Second_Choice 
		Third_Choice;
	cards;
1231 &amp;nbsp;&amp;nbsp; &amp;nbsp;23345 &amp;nbsp;&amp;nbsp; &amp;nbsp;102011 &amp;nbsp;&amp;nbsp; &amp;nbsp;3 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;0
1231 &amp;nbsp;&amp;nbsp; &amp;nbsp;23345 &amp;nbsp;&amp;nbsp; &amp;nbsp;102333 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;1
1231 &amp;nbsp;&amp;nbsp; &amp;nbsp;23345 &amp;nbsp;&amp;nbsp; &amp;nbsp;102441 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;1 &amp;nbsp;&amp;nbsp; &amp;nbsp;0
1231 &amp;nbsp;&amp;nbsp; &amp;nbsp;24898 &amp;nbsp;&amp;nbsp; &amp;nbsp;101457 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;1
1231 &amp;nbsp;&amp;nbsp; &amp;nbsp;24898 &amp;nbsp;&amp;nbsp; &amp;nbsp;149845 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;1
1354 &amp;nbsp;&amp;nbsp; &amp;nbsp;28779 &amp;nbsp;&amp;nbsp; &amp;nbsp;112786 &amp;nbsp;&amp;nbsp; &amp;nbsp;1 &amp;nbsp;&amp;nbsp; &amp;nbsp;2 &amp;nbsp;&amp;nbsp; &amp;nbsp;0
1354 &amp;nbsp;&amp;nbsp; &amp;nbsp;28779 &amp;nbsp;&amp;nbsp; &amp;nbsp;122654 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;2 &amp;nbsp;&amp;nbsp; &amp;nbsp;0
1354 &amp;nbsp;&amp;nbsp; &amp;nbsp;28779 &amp;nbsp;&amp;nbsp; &amp;nbsp;125234 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;1
1354 &amp;nbsp;&amp;nbsp; &amp;nbsp;28779 &amp;nbsp;&amp;nbsp; &amp;nbsp;145889 &amp;nbsp;&amp;nbsp; &amp;nbsp;1 &amp;nbsp;&amp;nbsp; &amp;nbsp;0 &amp;nbsp;&amp;nbsp; &amp;nbsp;0
;

proc sort data=have;
	by Store_ID Customer_Number Third_Choice;
	where First_Choice&amp;gt;0 or Second_Choice &amp;gt;0 or Third_Choice=1;
run;

data want;
	i=0;

	do until(last.Third_Choice);
		set have;
		by Store_ID Customer_Number Third_Choice;
		i+1;
	end;

	do until(last.Third_Choice);
		set have;
		by Store_ID Customer_Number Third_Choice;

		if (First_Choice&amp;gt;0 or Second_Choice &amp;gt;0) or (Third_Choice=1 and i=1);
		output;
	end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Fri, 24 Jun 2016 02:27:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Selection/m-p/279887#M56472</guid>
      <dc:creator>Jagadishkatam</dc:creator>
      <dc:date>2016-06-24T02:27:42Z</dc:date>
    </item>
  </channel>
</rss>

