본문 바로가기
SAS/SAS Tip's

[SAS] 그룹별 동일 항목으로 구성된 관측치 추출하기

by 기서무나구물 2022. 12. 28.

 

[SAS] 그룹별 동일 항목으로 구성된 관측치 추출하기

 

* 질문 항목 : https://cafe.daum.net/statsas/B3m/15505

 

Daum 카페

 

cafe.daum.net

 


SAS Programming
DATA BACK;
     INPUT id item $;
CARDS;
1 a
1 b
1 c
1 d
2 a
2 a
2 a
2 a
3 a
3 b
3 a
3 b
4 a
4 c
4 a
4 c
5 b
5 b
6 b
6 b
6 b
6 b
7 a
7 a
7 a
7 a
;

  • 방법1 : ID를 기준으로 item 변수를 정렬하여서 ID별로 최종 값이 'a' 인 경우에 해당하는 관측치 선택하여 원본(back)에서 해당 관측치 선택;
SAS Programming
PROC SORT DATA=BACK;
     BY id item;
RUN;

DATA BACK_1;
 SET BACK;
     BY id item;
     IF LAST.ID AND ITEM='a' THEN OUTPUT;
RUN;

DATA BACK_2;
 MERGE BACK(IN=A) BACK_1(IN=B);
     BY ID;
     IF A AND B;
RUN;

 


  • 방법2 : SQL을 사용하여서 ID변수를 기준으로 item변수의 항목이 1개이면서 'a' 인 관측치 항목을 선택
SAS Programming
proc sql;
  select a.*
  from   back a,
         (   select id,
                    count(distinct item) as disitnct_item,
                    max(item) as max_item
             from   back a
             group by id
             having count(distinct item) = 1 and max(item) = 'a'
         ) b
  where  a.id = b.id;
quit;

 


  • 방법3 : having 절을 사용하여서 해당 조건을 만족하는 관측치 선택;
SAS Programming
proc sql;
  select *
  from   BACK
  group by id
  having count(distinct item) = 1 and item='a';
quit;

 

Results
OBS    id    item

 1      2     a  
 2      2     a  
 3      2     a  
 4      2     a  
 5      7     a  
 6      7     a  
 7      7     a  
 8      7     a

 


 

 

반응형

댓글