<?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 subset repeated observations based on non missing values of a variable? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692703#M211072</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input ID $	Visit	Data $;
cards;
AAA	1	131
AAA	2	5
AAA	3	.
BBB	1	12
BBB	2	61
CCC	1	17
DDD	1	87
DDD	2	.
DDD	3	13
EEE	1	.
EEE	2	.
FFF	1	18
GGG	1	31
HHH	1	.
HHH	2	.
HHH	3	XY
;

proc sql;
 create table want as
 select *
 from have
 group by id
 having n(data)&amp;gt;=2
 order by id,visit;
quit;

/*or*/
data want;
 do _n_=1 by 1 until(last.id);
  set have;
  by id;
  _n=sum(^missing(data),_n);
 end;
 do _n_=1 to _n_;
  set have;
  if _n&amp;gt;=2 then output;
 end;
 drop _:;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Mon, 19 Oct 2020 20:53:14 GMT</pubDate>
    <dc:creator>novinosrin</dc:creator>
    <dc:date>2020-10-19T20:53:14Z</dc:date>
    <item>
      <title>How to subset repeated observations based on non missing values of a variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692699#M211069</link>
      <description>&lt;P&gt;Hi all,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm working on this dataset that has repeated measures over time. I want to detect the IDs where they have at least 2 non missing observations in the variable "Data". A sample of the dataset is shown below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;ID&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;Visit&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;Data&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;131&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;61&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;CCC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;17&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;87&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;EEE&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;EEE&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;FFF&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;GGG&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;31&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;HHH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;HHH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;HHH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;25&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;At the moment, I've modified a code that&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;helped me out with from a previous question (thanks again!). However, when I ran this modified code, it seems to only detect (keep) the IDs where there is non-missing data right after each other (back-to-back). I believe it has something to do with the _flag step and have tried modifying that as well but I'm struggling to figure it out:&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 want;
     do _n_=1 by 1 until(last.id);
	   set have;
       by id;
       if (data ne .) then _count=sum(_count,1);
	   else _count=0;
	   if _count&amp;gt;=2 then _flag=1;
	   end;
	 do _n_=1 to _n_;
	   set have;
	   if _flag then output;
	   end;
	drop _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this case, as long as there is at least 2 non-missing data in that ID (regardless of whether the non-missing data are back-to-back). Based on the sample table above, I'd want to produce something like the table below:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&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;
&lt;P&gt;ID&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Visit&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Data&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;131&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;61&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;87&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;13&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;Any help would be much appreciated!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2020 20:47:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692699#M211069</guid>
      <dc:creator>asgee</dc:creator>
      <dc:date>2020-10-19T20:47:45Z</dc:date>
    </item>
    <item>
      <title>Re: How to subset repeated observations based on non missing values of a variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692701#M211071</link>
      <description>&lt;P&gt;I think you can just use the HAVING clause in PROC SQL. Does the following work for you? If not, please post the log.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;

create table want as&amp;nbsp;

select *

from have

group by ID

having count(data)&amp;gt;2;

quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/308380"&gt;@asgee&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;
&lt;P&gt;Hi all,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm working on this dataset that has repeated measures over time. I want to detect the IDs where they have at least 2 non missing observations in the variable "Data". A sample of the dataset is shown below:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;ID&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;Visit&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;Data&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;131&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;61&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;CCC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;17&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;87&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;13&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;EEE&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;EEE&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;FFF&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;18&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;GGG&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;31&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;HHH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;HHH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;HHH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;XY&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;At the moment, I've modified a code that&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;helped me out with from a previous question (thanks again!). However, when I ran this modified code, it seems to only detect (keep) the IDs where there is non-missing data right after each other (back-to-back). I believe it has something to do with the _flag step and have tried modifying that as well but I'm struggling to figure it out:&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 want;
     do _n_=1 by 1 until(last.id);
	   set have;
       by id;
       if (data ne .) then _count=sum(_count,1);
	   else _count=0;
	   if _count&amp;gt;=2 then _flag=1;
	   end;
	 do _n_=1 to _n_;
	   set have;
	   if _flag then output;
	   end;
	drop _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In this case, as long as there is at least 2 non-missing data in that ID (regardless of whether the non-missing data are back-to-back). Based on the sample table above, I'd want to produce something like the table below:&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&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;
&lt;P&gt;ID&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Visit&lt;/P&gt;
&lt;/TD&gt;
&lt;TD&gt;
&lt;P&gt;Data&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;131&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;5&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;AAA&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;12&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;BBB&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;61&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;87&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;2&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;.&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="48.75px"&gt;
&lt;P&gt;DDD&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="41.25px"&gt;
&lt;P&gt;3&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="47.5px"&gt;
&lt;P&gt;13&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;Any help would be much appreciated!&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks&lt;/P&gt;
&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2020 20:49:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692701#M211071</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-10-19T20:49:10Z</dc:date>
    </item>
    <item>
      <title>Re: How to subset repeated observations based on non missing values of a variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692703#M211072</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;
data have;
input ID $	Visit	Data $;
cards;
AAA	1	131
AAA	2	5
AAA	3	.
BBB	1	12
BBB	2	61
CCC	1	17
DDD	1	87
DDD	2	.
DDD	3	13
EEE	1	.
EEE	2	.
FFF	1	18
GGG	1	31
HHH	1	.
HHH	2	.
HHH	3	XY
;

proc sql;
 create table want as
 select *
 from have
 group by id
 having n(data)&amp;gt;=2
 order by id,visit;
quit;

/*or*/
data want;
 do _n_=1 by 1 until(last.id);
  set have;
  by id;
  _n=sum(^missing(data),_n);
 end;
 do _n_=1 to _n_;
  set have;
  if _n&amp;gt;=2 then output;
 end;
 drop _:;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 19 Oct 2020 20:53:14 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692703#M211072</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2020-10-19T20:53:14Z</dc:date>
    </item>
    <item>
      <title>Re: How to subset repeated observations based on non missing values of a variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692704#M211073</link>
      <description>Hi &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza&lt;/a&gt; ! Thanks for the reply. Yes it seems like your code works perfectly! I never came across the "HAVING" clause so that's really good to know. Could there also be a "NOT HAVING" clause if I wanted to subset the opposite?</description>
      <pubDate>Mon, 19 Oct 2020 21:03:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692704#M211073</guid>
      <dc:creator>asgee</dc:creator>
      <dc:date>2020-10-19T21:03:33Z</dc:date>
    </item>
    <item>
      <title>Re: How to subset repeated observations based on non missing values of a variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692705#M211074</link>
      <description>Hi &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt; ! Thanks for your reply. I tried your code and it works as well! Will keep your solution in mind for other issues I have with repeated measures. Thanks again!</description>
      <pubDate>Mon, 19 Oct 2020 21:04:59 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692705#M211074</guid>
      <dc:creator>asgee</dc:creator>
      <dc:date>2020-10-19T21:04:59Z</dc:date>
    </item>
    <item>
      <title>Re: How to subset repeated observations based on non missing values of a variable?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692707#M211076</link>
      <description>&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/308380"&gt;@asgee&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;Hi &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/13879"&gt;@Reeza&lt;/a&gt; ! Thanks for the reply. Yes it seems like your code works perfectly! I never came across the "HAVING" clause so that's really good to know. &lt;STRONG&gt;Could there also be a "NOT HAVING" clause if I wanted to subset the opposite?&lt;/STRONG&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Try it and let us know &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 19 Oct 2020 21:10:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-subset-repeated-observations-based-on-non-missing-values/m-p/692707#M211076</guid>
      <dc:creator>Reeza</dc:creator>
      <dc:date>2020-10-19T21:10:48Z</dc:date>
    </item>
  </channel>
</rss>

