子集记录基于一个观测值的出现,也基于其他观测值的发生



假设具有以下内容:

ID       Rep    Year     
0001      exA    2015
0001      exA    2015
0002      exA    2015
0002      exB    2015
0002      exA    2015
0002      exC    2015 
0003      exC    2016
0003      exA    2016
0003      exD    2016
0003      exA    2016 
.....     ...    ....

是否有一种方法可以根据Rep列中exA的外观以及其他ex*来对ID进行子集设置?这只适用于2015年。不应提取只有exA的ID 0001。标准是存在exA(强制性(,但也存在其他ex*

期望输出:

ID       Rep    Year           
0002      exA    2015       
0002      exB    2015
0002      exA    2015
0002      exC    2015 

试试这个

data have;
input ID $ Rep $ Year;
datalines;
0001 exA 2015 
0001 exA 2015 
0002 exA 2015 
0002 exB 2015 
0002 exA 2015 
0002 exC 2015 
0003 exC 2016 
0003 exA 2016 
0003 exD 2016 
0003 exA 2016 
;
proc sql;
create table want as
select * from have
where year = 2015
group by ID
having sum(Rep = 'exA') > 0
and count(distinct Rep) > 1
;
quit;

最新更新