BookmarkSubscribeRSS Feed

[SAS 프로그래밍] CASE WHEN으로 조건을 만족하는 중복 값을 제거하는 방법

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

 

 안녕하세요오늘은 PROC문에서 DISTINCT, CASE WHEN 을 사용하여 특정한 조건을 만족시키면서 동시에 중복을 무시하는 방법에 대해 알아 보겠습니다.

 

 

Data

예시로 사용될 데이터는 id, a, b, c 라는 네개의 변수로 만들었습니다6개의 개체가 들어있고 각 변수들에는 중복되는 값이 들어가 있습니다.

 

nVJmB8GAEeq7Xwa7DXAYB5Xp9e3sDrE9GQMnrk4cE324EEIf3nAbgFbzuicCeo8J6Ba97IrDnqLBeweueCOw5KqzXPXn9D_pKvhO.png

 

ygM2DTp3kQdsHnDzJAzYPOnWSB20fcPIkD9g86NRJHrR9wMmTPGDzoFMnedD2ASdP8oDNg0793zQoTCRtlOsgAAAAAElFTkSuQmC.png

 

 

 

 

 

 

 

Count distinct in case when

 일반적으로 중복을 제거하기 위해 자주 쓰이는 DISTINCT COUNT 함수와 같이 사용한다면, DISTINCT가 쓰인 변수에서 중복이 제거된 자료값의 개수를 계산할 수 있습니다여기에 특별한 조건을 넣고 싶다면 CASE WHEN을 추가하면 됩니다.

 

IWSTagQgMDiBFD8xQuA8CEAgYUIoPgLJZtQIQCBxQmg_IsXAOFDAAILEUDxF0o2oUIAAosTQPEXLwDChwAEFiKA4i_UbEKFAAQWJ.png

 

bqGmQa3DkP4fwewU4CDcwdAA2gADWCg5gDWBnCBtQEMYG0AA20HsFOAEOwUYAA7BRjATgEGqA6gb6A6tYZxoGENVabOETRQnVrDu.png

 

PROC SQL문에서 Count함수에 Distinct함수를 같이 사용하여 변수 c에서 중복이 제거된 자료값의 개수가 4개로 계산되어 변수d_c에 나타내었습니다그리고 a 20크고 b 40보다 작은 새로운 조건을 CASE WHEN함수로 추가하여 조건을 만족하는 개체에 대해서만 변수 c의 중복을 제거한 자료값의 개수가 1개로 계산되어 변수 unique_casewhen로 나타내었습니다.

 

 

 

 

 

 

 

 

 

Sum distinct in case when

중복을 무시하고 자료값의 합을 계산 할 때도 CASE WHEN을 사용하여 조건을 만족시키는 중복제거를 할 수 있습니다다음은 변수 a에서 중복된 값을 무시하고 합계를 구하는 과정을 나타낸 것 입니다단순히 sum, distinct함수만을 사용한 것과 case when 으로 조건을 추가 시킨 것, distinct 함수 없이 case when함수만으로 조건을 만족시킨 합계를 구한 3가지 경우를 id변수로 그룹화 하여 나타낸 것입니다. coalesce함수는 만약에 조건에서 결측치가 나오는 경우 0을 출력하는 기능을 하고 있습니다.

 

wHKNDVM6ZUh0wAAAABJRU5ErkJggg__.png

 

gb_0tDxiZfx6YAAAAASUVORK5CYII_.png

 

단순히 중복된 값만 제거하고 변수a의 합을 구한 결과 그룹별로 35(12+23), 37(12+25)의 값이 계산 되었습니다조건을 만족하면서 중복을 제거한 변수a의 합은 각각 12, 37(12+25)의 값이조건만 만족하고 중복을 제거하지 않는 경우는 각각 12, 49(12+12+25)의 값이 계산되었습니다.

 

 

 

 

 

 

 

마치며

오늘은 PROC SQL문에서 필요한 조건을 만족하는 동시에 중복된 값을 제거할 때 DISTINCT함수와 CASE WHEN함수를 활용하는 법에 대해 알아보았습니다오늘 예를 들어본 개체의 수를 세는 경우(COUNT)와 자료값의 합을 구하는 경우(SUM)외에도 필요에 따라 여러 함수들과 함께 쓰일 수 있어 데이터를 분석할 때 유용하게 쓰일 수 있습니다.

 

 

 

 

 

 

Reference

http://www.listendata.com/2016/10/sas-sql-use-distinct-in-case-when.html

Version history
Last update:
‎06-17-2020 10:43 PM
Updated by:
Contributors

sas-innovate-white.png

Special offer for SAS Communities members

Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.

 

View the full agenda.

Register now!

Article Labels
Article Tags