포스팅 목차
[SAS] 그룹별 동일 항목으로 구성된 관측치 추출하기
* 질문 항목 : https://cafe.daum.net/statsas/B3m/15505
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
반응형
'SAS > SAS Tip's' 카테고리의 다른 글
[IML] 관측치 행단위 기준으로 최빈값(Mode) 구하기 (1) | 2022.10.05 |
---|---|
[DB 로딩 에러 방지] 오라클 DB 건수 체크 후 데이터 로딩 (0) | 2021.12.03 |
[데이터 결합] Data Step에서의 카테시안 곱(Cartesian product) 구현하기 (0) | 2021.11.16 |
[변수출력] 다양한 변수 리스트 출력 방식; (0) | 2021.11.15 |
[자원관리] 라이브러리에서 임시(TEMP) 데이터 세트 지우기 (0) | 2021.11.04 |
댓글