사이트맵  |  Contact Us
 
홈 > SAS Tech & Tip > SAS Programming
[SAS 프로그래밍] 중복된 행(duplicate rows)의 개수 세기 2017.11.20
MYSAS 시샵 3977 0
http://www.mysas.co.kr/SAS_tiptech/a_question.asp?b_no=7524&gotopage=8&con=subject&keyword=&cmd=content&bd_no=05&gubun=

[SAS 프로그래밍] 중복된 행(duplicate rows)의 개수 세기

 

 

안녕하세요^^

 

이번 시간에는 자료에서 중복된 행(duplicate rows)의 개수를 세는 방법에 대해 알아보겠습니다.

 

 

▶ 예제데이터 생성하기

먼저 중복된 행의 개수를 세기 위해 예제 데이터를 만들어 보겠습니다.

 

 

 ▷ 목적

row9명의 자료이며, (lastname), 이름(firstname), 도시(city), (state)가 입력되어 있습니다

이 예제 데이터는 네 개의 변수 모두 중복되는 경우가 존재하기 때문에, 모두 같은 열이 몇 개가 존재하는지 세어보도록 하겠습니다

 

 

 

 

DATA STEP 사용하기; retain 문장 & if first. / if last. ~ 문장

Data step 문장에서 retain 문장을 사용하여 중복된 행의 개수를 셀 수 있습니다.

 

 

 coding 1


먼저 retain문장과 if first.변수명 문장을 사용하기 위해, 중복을 고려할 변수들을 proc sort 프로시저를 사용하여 자료를 정렬시킵니다.

네 변수 모두의 중복을 고려하기 위해, by 문장에 성(lastname), 이름(firstname), 도시(city), (state)로 정렬시키면 예제 데이터는 오른쪽과 같이 알파벳 순서로 정렬됩니다.


 

 If last.~ 문장을 실행하지 않았을 때

 

 If last.~ 문장을 실행하였을 때

 

coding 2

 

Retain 문장과 if first. 문장을 사용하여 중복되는 열의 개수를 셀 수 있습니다.

retain 문장으로 count라는 변수명으로 1, 2, 3,… 처럼 1씩 증가하는 열의 값을 입력할 수 있습니다.

 

• 이 때 if first.변수명 문장으로 조건에 맞는 첫 번째 열이 나타나면 count1의 값이 입력되도록 할 수 있습니다.

if first.변수명1 or first.변수명2 or first.변수명3 or first.변수명4 처럼 여러 개의 조건을 줄 수 있습니다.

• 이 경우, (lastname), 이름(firstname), 도시(city), (state) 중에 처음 나오는 값이 존재하면 count 1부터 다시 세도록 코드를 작성하였습니다.

 

• 위 코딩의 결과는, if.first 문장을 실행하였을 때의 결과(우측 상단)와 같습니다

 

 coding 3

 

마지막으로 if last. ~ 문장을 사용하여 자료에서 count의 값이 1로 바뀌기 전의 열만을 가져오겠습니다.

이 때도 마찬가지로 조건은 네 변수 모두에 대해 주게 됩니다.

 

 ▷ 결과

위의 자료를 사용한 결과는 오른쪽 하단에 있는 결과입니다.

해당 결과는 (lastname), 이름(firstname), 도시(city), (state)가 중복되지 않은(unique) 행 만을 나타내고 있으며,

가장 오른쪽 열인 count 변수는 원자료에서 중복된 행이 몇 개가 있었는지를 보여줍니다.

 

 

 

 

 

PROC SQL 사용하기

 

 

 coding

PROC SQL 문장을 사용해서 위의 DATA STEP과 같은 결과를 얻을 수 있습니다.

 

select 문장의 *을 사용하여 from 문장에 있는 Duplicates 데이터의 모든 변수를 가져옵니다.

count(*)를 사용하여 count라는 변수로 중복된 행의 개수를 입력합니다.

group by 문장을 사용하여 (lastname), 이름(firstname), 도시(city), (state)가 모두 같지 않은 행을 기준으로 잡습니다.

 

 ▷ 결과

위의 자료를 사용한 결과는 오른쪽 하단에 있는 결과입니다.

해당 결과는 (lastname), 이름(firstname), 도시(city), (state)가 중복되지 않은(unique) 행 만을 나타내고 있으며,

가장 오른쪽 열인 count 변수는 원자료에서 중복된 행이 몇 개가 있었는지를 보여줍니다.

 

 

 

 

이상으로 중복된 행의 개수를 세는 방법에 대해 알아보았습니다.

감사합니다^^

 

 

[출처]

http://support.sas.com/documentation/cdl/en/sqlproc/63043/HTML/default/viewer.htm#p1nlqenp6yoyitn1tbz095cbvxt3.htm

 
 
휴대폰 번호
휴대폰 인증번호
 
 [SAS 프로그래밍] 여러 개의 열의 데이터 요약하기
 [SAS 프로그래밍] 가중평균 계산하기