<?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: programming for extracting eligible subjects from counting process format. in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514100#M138610</link>
    <description>&lt;P&gt;The best strategy depends a lot on the type of rules that you want to implement. For the example given, a flexible approach would be to transpose your data and remerge the selected ids:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Year Id psyc_c dprs_c;
datalines;
2002 1 0 0 
2003 1 0 1 
2004 1 0 0 
2005 1 0 0 
2006 1 0 0 
2002 2 0 0 
2003 2 0 0 
2004 2 0 0 
2005 2 0 0 
2006 2 0 0 
2002 3 0 2 
2003 3 0 0 
2004 3 3 0 
2005 3 0 0 
2006 3 0 0 
2002 4 1 0 
2003 4 0 0 
2004 4 0 0 
2005 4 0 3 
2006 4 0 3 
;

proc transpose data=have out=full(drop=_name_) prefix=psyc_c_;
by id;
id year;
var psyc_c;
run;

proc print data=full; run;

data selected(keep=id);
set full;
if psyc_c_2002 = 0 and psyc_c_2003 = 0 then delete;
if psyc_c_2004 = 3 then delete;
/* .... */
run;

data want;
merge have selected(in=ok);
by id;
if ok;
run;

proc print data=want; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 17 Nov 2018 04:29:25 GMT</pubDate>
    <dc:creator>PGStats</dc:creator>
    <dc:date>2018-11-17T04:29:25Z</dc:date>
    <item>
      <title>programming for extracting eligible subjects from counting process format.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514087#M138599</link>
      <description>&lt;P&gt;I wonder what is the general rule for extracting eligible subjects in a counting process format in SAS.&lt;/P&gt;&lt;P&gt;For example, take a look at the table below. Let's assume that I set a condition that a subject (ID) is not eligible if psyc_c is both 0 during 2002 and 2003. Then I wouldn't want to include the subject in the dataset. I think that I deal with a problem like this very often in programming in a counting process format. Another example can be that I want to eliminate subjects if there is a certain number in a variable in a certain year. For example, I want to eliminate a subject if their psyc_c is 3 in 2004, then ID 3 will be excluded from the data. Please help me to figure out.. Thanks..&amp;nbsp;&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;Year&lt;/TD&gt;&lt;TD&gt;Id&lt;/TD&gt;&lt;TD&gt;psyc_c&lt;/TD&gt;&lt;TD&gt;dprs_c&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2002&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;TR&gt;&lt;TD&gt;2003&lt;/TD&gt;&lt;TD&gt;1&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;2004&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;TR&gt;&lt;TD&gt;2005&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;TR&gt;&lt;TD&gt;2006&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;TR&gt;&lt;TD&gt;2002&lt;/TD&gt;&lt;TD&gt;2&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;2003&lt;/TD&gt;&lt;TD&gt;2&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;2004&lt;/TD&gt;&lt;TD&gt;2&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;2005&lt;/TD&gt;&lt;TD&gt;2&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;2006&lt;/TD&gt;&lt;TD&gt;2&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;2002&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2003&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;2004&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2005&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;2006&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;2002&lt;/TD&gt;&lt;TD&gt;4&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;2003&lt;/TD&gt;&lt;TD&gt;4&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;2004&lt;/TD&gt;&lt;TD&gt;4&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;2005&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2006&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;TD&gt;0&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Sat, 17 Nov 2018 01:38:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514087#M138599</guid>
      <dc:creator>asinusdk</dc:creator>
      <dc:date>2018-11-17T01:38:10Z</dc:date>
    </item>
    <item>
      <title>Re: programming for extracting eligible subjects from counting process format.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514091#M138602</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/240083"&gt;@asinusdk&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;I wonder what is the general rule for extracting eligible subjects in a counting process format in SAS.&lt;/P&gt;
&lt;P&gt;For example, take a look at the table below. Let's assume that I set a condition that a subject (ID) is not eligible if psyc_c is both 0 during 2002 and 2003. Then I wouldn't want to include the subject in the dataset. &lt;STRONG&gt;I think that I deal with a problem like this very often in programming in a counting process format.&lt;/STRONG&gt; Another example can be that I want to eliminate subjects if there is a certain number in a variable in a certain year. For example, I want to eliminate a subject if their psyc_c is 3 in 2004, then ID 3 will be excluded from the data.&lt;STRONG&gt; Please help me to figure out.&lt;/STRONG&gt;. Thanks..&amp;nbsp;&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;Year&lt;/TD&gt;
&lt;TD&gt;Id&lt;/TD&gt;
&lt;TD&gt;psyc_c&lt;/TD&gt;
&lt;TD&gt;dprs_c&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2002&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;TR&gt;
&lt;TD&gt;2003&lt;/TD&gt;
&lt;TD&gt;1&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;2004&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;TR&gt;
&lt;TD&gt;2005&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;TR&gt;
&lt;TD&gt;2006&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;TR&gt;
&lt;TD&gt;2002&lt;/TD&gt;
&lt;TD&gt;2&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;2003&lt;/TD&gt;
&lt;TD&gt;2&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;2004&lt;/TD&gt;
&lt;TD&gt;2&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;2005&lt;/TD&gt;
&lt;TD&gt;2&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;2006&lt;/TD&gt;
&lt;TD&gt;2&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;2002&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;2&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2003&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;2004&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2005&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;2006&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;2002&lt;/TD&gt;
&lt;TD&gt;4&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;2003&lt;/TD&gt;
&lt;TD&gt;4&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;2004&lt;/TD&gt;
&lt;TD&gt;4&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;2005&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;2006&lt;/TD&gt;
&lt;TD&gt;4&lt;/TD&gt;
&lt;TD&gt;0&lt;/TD&gt;
&lt;TD&gt;3&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;The logical approach is pretty straight forward--&amp;gt;&lt;/P&gt;
&lt;P&gt;You just need to structure your piecemeal like&lt;/P&gt;
&lt;P&gt;1. check for condition&amp;nbsp;&lt;/P&gt;
&lt;P&gt;2. flag if true/false accordingly&lt;/P&gt;
&lt;P&gt;3. update/delete/or just retain the flagged group/records&lt;/P&gt;
&lt;P&gt;4. Outout to one or many datasets based on the flagged condition if any&lt;/P&gt;
&lt;P&gt;5. Translate the above 4 into SAS language&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And you are done&lt;/P&gt;</description>
      <pubDate>Sat, 17 Nov 2018 02:06:40 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514091#M138602</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2018-11-17T02:06:40Z</dc:date>
    </item>
    <item>
      <title>Re: programming for extracting eligible subjects from counting process format.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514100#M138610</link>
      <description>&lt;P&gt;The best strategy depends a lot on the type of rules that you want to implement. For the example given, a flexible approach would be to transpose your data and remerge the selected ids:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
input Year Id psyc_c dprs_c;
datalines;
2002 1 0 0 
2003 1 0 1 
2004 1 0 0 
2005 1 0 0 
2006 1 0 0 
2002 2 0 0 
2003 2 0 0 
2004 2 0 0 
2005 2 0 0 
2006 2 0 0 
2002 3 0 2 
2003 3 0 0 
2004 3 3 0 
2005 3 0 0 
2006 3 0 0 
2002 4 1 0 
2003 4 0 0 
2004 4 0 0 
2005 4 0 3 
2006 4 0 3 
;

proc transpose data=have out=full(drop=_name_) prefix=psyc_c_;
by id;
id year;
var psyc_c;
run;

proc print data=full; run;

data selected(keep=id);
set full;
if psyc_c_2002 = 0 and psyc_c_2003 = 0 then delete;
if psyc_c_2004 = 3 then delete;
/* .... */
run;

data want;
merge have selected(in=ok);
by id;
if ok;
run;

proc print data=want; run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 17 Nov 2018 04:29:25 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514100#M138610</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-11-17T04:29:25Z</dc:date>
    </item>
    <item>
      <title>Re: programming for extracting eligible subjects from counting process format.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514119#M138622</link>
      <description>When data are already ordered, rather than re-merge or transpose I prefer a parallel pass in (this case) ID by- group. The first pass collects the criteria that are applied on the second pass. &lt;BR /&gt;&lt;BR /&gt;Data selected ; &lt;BR /&gt;Set have(in= a) have(in=b) ;&lt;BR /&gt;By ID ;&lt;BR /&gt;If first.id then do ;&lt;BR /&gt;   Retain flag1-flag3  counter1-counter3 ;&lt;BR /&gt;   Call missing( of flag1-flag3, of counter1-counter3).;&lt;BR /&gt;IF A  then do ;&lt;BR /&gt;   "   update counters if appropriate ; &lt;BR /&gt;   * check if criteria apply and set flags ;&lt;BR /&gt;End ;&lt;BR /&gt;&lt;BR /&gt;  If ( criteria are right ) then output  ;&lt;BR /&gt;Run;</description>
      <pubDate>Sat, 17 Nov 2018 13:19:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514119#M138622</guid>
      <dc:creator>Peter_C</dc:creator>
      <dc:date>2018-11-17T13:19:27Z</dc:date>
    </item>
    <item>
      <title>Re: programming for extracting eligible subjects from counting process format.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514156#M138629</link>
      <description>&lt;P&gt;I thought about transposing it, but I couldn't handle a problem some subjects who are missing for some years....&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 17 Nov 2018 21:30:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514156#M138629</guid>
      <dc:creator>asinusdk</dc:creator>
      <dc:date>2018-11-17T21:30:07Z</dc:date>
    </item>
    <item>
      <title>Re: programming for extracting eligible subjects from counting process format.</title>
      <link>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514163#M138630</link>
      <description>&lt;P&gt;Some subjects missing for some years wouldn't be a problem, unless they are missing for all years. Experiment!&lt;/P&gt;</description>
      <pubDate>Sat, 17 Nov 2018 22:34:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/programming-for-extracting-eligible-subjects-from-counting/m-p/514163#M138630</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2018-11-17T22:34:13Z</dc:date>
    </item>
  </channel>
</rss>

