在SAS 9.2中,我目前正在使用面板数据集。我有一个变量说明年份和变量说明个人。有些人每年都没有出现,我想摆脱这些观察。它的简化版本看起来像这样:
所以在这种情况下,我想保留第1和第3人或者另外说明,我想删除第二个人,因为他不会每年都出现。
我希望这是有道理的。
由于
答案 0 :(得分:1)
我认为最简单的方法是使用PROC SQL中的子查询进行查询:
data have;
input person year;
datalines;
1 2008
1 2009
1 2010
2 2008
2 2010
3 2008
3 2009
3 2010
;
run;
proc sql noprint;
create table want as
select *
from have
where person in
(select person
from have
group by person
having min(year)=2008 and max(year)=2010 and count(distinct year)=3);
quit;
如果整个数据集的最小和最大年份是固定的,您可以在HAVING子句中删除前两个条件,并且只保留COUNT(DISTINCT ...)。
答案 1 :(得分:0)
数据步骤解决方案,其功能几乎与SQL相同:
data have;
input person year;
datalines;
1 2008
1 2009
1 2010
2 2008
2 2010
3 2008
3 2009
3 2010
;
run;
data want;
do _n_ = 1 by 1 until (last.person);
set have;
by person;
if year ge 2008 and year le 2010 then yearcount+1;
end;
do _n_ = 1 by 1 until (last.person);
set have;
by person;
if yearcount=3 then output;
end;
yearcount=0;
run;