BookmarkSubscribeRSS Feed

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

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 672

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

 

 

안녕하세요^^

 

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

 

 

▶ 예제데이터 생성하기

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

 

5a6XiF6C3CcAAAAASUVORK5CYII_.png

 

f3Nxw83p0_fb7ta254_edw9A4B2vHz1unv24JtkCwBYHrcRAKACki0AVECyBYAKSLYAsLrT6X8BRnww5514sOoAAAAASUVORK5CY.png

 

▷ 목적

• 각 row는 9명의 자료이며, 성(lastname), 이름(firstname), 도시(city), 주(state)가 입력되어 있습니다

 

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

 

 

 

 

 

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

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

 

lYgxk_EHPcZMxen0HSkDqcywDyZBAAAAAElFTkSuQmCC.png

 

JlEHvUz08egAAAABJRU5ErkJggg__.png

 

 

 

 

 

▷ coding 1

 

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

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

 

BzOPVlJVwMEyAAAAAElFTkSuQmCC.png

 

 

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

 

yNLqdzzGKwwAAAAASUVORK5CYII_.png

 

 

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

 

vrw8fP900tXo9efyoeQYAWMqLl6_aZydfJQ0AANpwewoAkEbSAACkkTQAAGkkDQBA0uHwfx99020pzF8UAAAAAElFTkSuQmCC.png

 

 

 

 

 

▷ coding 2

 

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

 

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

 

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

 

• 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 사용하기

 

3_xmfXwXyUwswG9vPwH98GmaE51JdkAAAAASUVORK5CYII_.png

 

627M3r_8szAMCaXr66uzx78lFSBgBcD7cvAKAjJGUA6AhJGQC6cXPzf5dKj6n2yfD7AAAAAElFTkSuQmCC.png

 

 

 

 

▷ 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#p1nlqenp6yoyitn1tb...

Version history
Last update:
‎06-17-2020 09:58 PM
Updated by:
Contributors

sas-innovate-wordmark-2025-midnight.png

Register Today!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.


Register now!

Article Labels
Article Tags