반응형
SAS에서 중복된 데이터 제거하기
중복된 데이터는 경우의 수가 다양합니다. 몇 가지의 경우에 대해 SAS data 구문의 first.ID, last.ID 와 proc sort 의 nodupkey 를 이용하여 중복된 record 를 제거해 보겠습니다.
< Sample data 생성 >
data test_data;
input ID $ gender $ bmi;
datalines;
A01 M 24
A01 M 24
A01 M 23.5
A02 M 26
A02 M 25
A02 M 24
A02 M 26.5
A03 M 24
A03 M 25
A04 M 25.5
A05 M 25
A05 M 25.7
A05 M 26
B01 F 24
B01 F 25
B01 F 24.5
B02 F 25
B02 F 25
B02 F 26
B02 F 26.5
B03 F 25
B03 F 24
B04 F 25.5
B05 F 25.7
B05 F 25
B05 F 26
;
run;
< Sample data 형태 >
1. 중복된 데이터 조회하기
proc sql;
select ID, count(*) as cnt from test_data group by ID having count(*)>1;
run;
* proc sql 의 select / group by / having 구문을 이용하여 ID별 1건 이상 데이터가 있는 것을 조회할 수 있습니다.
그 결과 A01 는 3건, A02 는 4건...B05는 3건의 데이터가 있는 것으로 확인됩니다.
2. 3가지 경우의 중복된 데이터 제거하기
1. 동일 ID에서 첫번째 행만 가져오기
아래 두가지 경우 결과는 동일합니다.
/* ID로 정렬후, first.ID 를 이용하면 첫번째 행만 가져오기 */
proc sort data=test_data;by ID;
data test_data1;
set test_data;by ID;
if first.ID;
run;
proc print data=test_data1;run;
/* ID로 정렬후, proc sort 의 nodupkey 이용하기 */
proc sort dat=test_data;by ID;
proc sort data=test_data out=test_data2 dupout=dup nodupkey;
by ID;
run;
proc print data=test_data2;run;
2. 동일 ID에서 제일 작은 bmi 만 가져오기
proc sort data=test_data;by ID bmi;
data test_data3;
set test_data;by id bmi;
if first.ID;
run;
proc print data=test_data3;run;
3. 동일 ID에서 제일 마지막 행만 가져오기
ID별로 순번을 정한 후 제일 마지막 순번만 남기는 방법으로 중복을 제거합니다.
ID별 순번 없이 if last.ID 만 쓰셔도 결과는 동일합니다. ID별 순번을 정해 놓으면 다른 작업을 위해 sorting해도 순서가 변하지 않기 때문에 순번을 미리 만들어 놓기도 합니다.
/* 입력된 순서대로 ID별로 순번 매기기 */
data test_data_ID;
set test_data;by ID;
if first.id then seqno=1;
else seqno=seqno+1;
retain seqno;
run;
/* 제일 마지막 것만 남기고 제거하기 */
proc sort data=test_data_ID;by ID seqno;
data test_data4;
set test_data_ID;by ID seqno;
if last.ID;
run;
proc print data=test_data4;
run;
< SAS Output >
'의학통계 > SAS Tip' 카테고리의 다른 글
SAS에서 Index 만드는 3가지 방법 (0) | 2022.07.09 |
---|---|
SAS에서 Wide, Long 포맷 데이터 변환하기 (0) | 2022.07.04 |
성능향상을 위한 SAS코딩 Tip (0) | 2022.06.30 |
Univariate 를 이용하여 percentile 구하기 (0) | 2022.06.23 |
Proc Rank 를 이용한 SAS 순위 정하기 (0) | 2022.06.23 |
댓글