BookmarkSubscribeRSS Feed

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

Started ‎06-17-2020 by
Modified ‎06-17-2020 by
Views 1,039

[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

hackathon24-white-horiz.png

The 2025 SAS Hackathon Kicks Off on June 11!

Watch the live Hackathon Kickoff to get all the essential information about the SAS Hackathon—including how to join, how to participate, and expert tips for success.

YouTube LinkedIn

Article Labels
Article Tags