준비
지난 시간 분석을 위한 data set을 모두 준비했습니다.
출판업계 전체(publishing_market_kr)와 DMR 출판사(dmr_customer_base_kr)의 수익 관련 data set 두 가지 였습니다.
오늘은 그 data set이 있는 곳을 라이브러리로 잡아 주면 모든 준비가 완성 됩니다. 아, 물론 두 data set이 같은 폴더에 담아져 있어야겠지요?
저는 아래 [그림 2-1]과 같이 “D:\TEMP\DMR_전략팀”에 두 data set이 모두 저장되어 있어서 그곳을 “MKT”라는 라이브러리로 잡았습니다.
[그림 2-1]
[그림 2-2]
여러분도 라이브러리 할당 후 서버리스트를 확인 하시면, 두 개의 data set 보실 수 있습니다.
“publishing_market_kr” data set을 열어보시면, 아래 [그림 2-3] 같은 sas data set을 확인 하실 수 있습니다.
[그림 2-3]
“dmr_customer_base_kr” data set도 위 [그림 2-3] 과 같은 형태로 요약을 하여 두 data set을 하나의 data set으로 병합하여 비교하려고 합니다.
JOIN 이란?
여기에서 “병합”에 대해서 설명 드리겠습니다. 두 data set을 합치기 위해서는 무엇을 기준으로 병합할 것인지가 중요합니다. 이 병합을 “join” 또는 “merge”라고 합니다.
예를 들어, 아래 두 테이블을 JOIN 하기로 합니다. (내용은 NAVER에서 검색한 결과 입니다... 사실 과는 다를지도 모르겠습니다 ^^;;;;)
[그림 2-4]
이름을 기준으로 JOIN을 하실 때에 가장 많이 쓰이는 JOIN은 아래와 같습니다.
[그림 2-5]
INNER JOIN 은 두 테이블에서 기준이 되는 “이름”이 동시에 존재하는 경우만 가져옵니다. 그래서 김태희와 아이유의 정보만 가져왔습니다.
[그림 2-6]
RIGHT JOIN은 두 테이블에서 오른쪽 테이블의 “이름”을 기준으로 왼쪽 테이블 정보를 가져옵니다그래서 김우빈의 생년월일은 빈 값으로 나옵니다.
[그림 2-7]
LEFT JOIN은 두 테이블에서 왼쪽 테이블의 “이름”을 기준으로 오른쪽 테이블 정보를 가져옵니다.그래서 강동원의 키와 몸무게는 빈 값으로 나옵니다.
[그림 2-8]
FULL OUTER JOIN은 두 테이블의 모든 “이름”을 기준으로 정보를 가져옵니다. 그래서 네 사람의 정보가 모두 들어와 있습니다.
“JOIN”에 대하여 조금 이해가 되시나요? 그러면 저희가 가지고 있는 두 개의 data set을 병합하기 위해서는 양쪽 data set 모두에 존재하는 “기준”이 필요합니다. 예시에서는 그것이 “이름”이었습니다. 저희가 분석할 data set에서는 “성별”과 “연령대”가 동시에 같을 때, 병합하려고 합니다. 즉, 기준이 “성별”, “연령대” 두 개가 되는 것입니다.
그런데 “publishing_market_kr”에는 “성별”, “연령대”가 있지만, “dmr_customer_base_kr”에는 “성별”만 존재합니다. 즉, “dmr_customer_base_kr”를 가지고 “연령대”라는 칼럼을 새로 만들어야 합니다.
심지어 그냥 만드는 것에서 끝나지 않습니다. “publishing_market_kr” 자체가 “성별”과 “연령대” 기준으로 구독자수, 수익, 구독부수를 합해 놓은 data이므로, “dmr_customer_base_kr”도 “성별”과 “연령대”를 기준으로 다른 변수들을 요약해야 합니다.
다시 말하자면,
① 두 data set을 놓고 비교를 하려고 하니, 병합을 해야 한다.
② 병합을 하려면, 두 data set에 같은 기준이 필요하다.
③ “dmr_customer_base_kr”에 “연령대” 칼럼을 만들고,
④ “성별”, “연령대” 기준으로 요약 합계를 하여 같은 기준을 만들겠다.
라는 것입니다. 이해 되시나요?
새로운 칼럼 생성
자, 그러면 “dmr_customer_base_kr”에 연령대를 만들러 가겠습니다.
서버리스트를 열어 “MKT. dmr_customer_base_kr”을 선택하시고, 질의빌더를 들어갑니다.
질의빌더 오른쪽에 파란 계산기 아이콘 기억하시죠? [새로운 계산 칼럼 추가]를 클릭하겠습니다.
[그림 2-9]
[그림 2-10]
“나이” 칼럼이 21세 보다 작거나 같을 때에는 "18세 이상 21세 이하"
21세 보다 크고 25세 보다 작거나 같을 때에는 "18세 이상 21세 이하"
25세 보다 크고 30세 보다 작거나 같을 때에는 "26세 이상 30세 이하"
30세 보다 크고 40세 보다 작거나 같을 때에는 "31세 이상 40세 이하"
40세 보다 크고 50세 보다 작거나 같을 때에는 "41세 이상 50세 이하"
50세보다 크면 "51세 이상" 이라고 쓰고, 그 외에는 다 빈칸으로 하는 “age_grp” 라는 칼럼을 생성하려고 합니다.
자, 이제 크게 숨을 들이쉬었다가 내쉬고, 타이핑을 해보도록 하겠습니다.
물론 “t1.AGE” 대신, “AGE”라고 쓰셔도 상관 없습니다. 그리고 “le” 대신 “<=” 부호를 쓰셔도 무방합니다. 하지만, 그 외에 다른 문법은 점 하나, 빈칸 하나 조심조심 쓰셔야 합니다.
case when t1.AGE le 21 then "18세 이상 21세 이하"
when t1.AGE le 25 then "18세 이상 21세 이하"
when t1.AGE le 30 then "26세 이상 30세 이하"
when t1.AGE le 40 then "31세 이상 40세 이하"
when t1.AGE le 50 then "41세 이상 50세 이하"
when t1.AGE ge 51 then "51세 이상" else "" end
라고 정확하게 타이핑 해주셔야 합니다.
[그림 2-11]
칼럼 이름과 레이블을 설정하신 다음에 [마침] 버튼을 클릭하겠습니다.
[그림 2-12]
[그림 2-12] 과 같이 좌측 박스에서 출력하고자 하는 칼럼들도 쓱 가져오겠습니다.
그리고, 맨 윗줄의 [질의 이름]은 “연령대”로 [출력 이름]은 “WORK.DMR_AGE_GRP”로 재설정 하겠습니다.
자, 이제 용감하게 [실행] 버튼을 클릭해 볼까요?
[그림 2-13]
[그림 2-13] 과 같은 결과가 나왔다면 아주 훌륭하게 해내신 겁니다.
혹시 중간에 [그림 2-14]과 같은 팝업 창을 발견하셨나요?
[그림 2-14]
당황하시지 마시고, [예] 버튼을 클릭한 후 “로그”를 확인하겠습니다.
[그림 2-15]
코드를 잘 모르셔도, 영어를 잘 모르셔도 됩니다. 빨간 글씨로 된 ERROR 부분을 확인하시면, “t1AGE” 부분이 잘 못 되었다고 나옵니다. 예, 바로 점 하나가 빠져서 에러가 났습니다.
아마 여러분의 에러들도 이렇게 작은 부분일 겁니다. 눈을 가늘게 뜨시고 꼭 에러를 스스로 찾아 보시기 바랍니다. 에러에 용감해 질수록 여러분의 실력도 늘어날 것입니다.
에러를 찾으셨다면, 로그 창을 닫으시고 “age_grp” 칼럼을 더블 클릭 합니다.
[그림 2-16]
표현식 하단에 있는 [편집] 버튼을 누르시면, 수정하실 수 있습니다.
[그림 2-17]
저는 빠진 점을 추가했습니다. 하단에 [다음] 버튼을 누른 후, 다음 페이지 하단의 [마침] 버튼을 클릭합니다.
[그림 2-18]
점 하나가 다시 들어 온 것을 확인 하고, [확인] 버튼을 누릅니다. 저는 더 이상 “경고 팝업 창”이 뜨지 않았습니다. 혹시 다시 경고 창이 떴다면, 위 과정을 반복하시면 됩니다.
다음 시간에는 JOIN을 실제로 해보려고 합니다. 실무에서 굉장히 많이 쓰이는 중요한 기능이기 때문에 이번 시간에 이론을 미리 설명 드렸습니다.
꼭 egp 저장 하시고, 실습을 마치시기 바랍니다 ^^
오늘까지 작업한 EGP를 다운로드 하실 수 있습니다.
저는 SAS Enterprise Guide 7.1, Local 환경에서 작업했습니다.
하위 버전이거나, 서버환경 일 경우 실행이 되지 않으실 수 있으니 참고 바랍니다.
물론 같은 버전, 같은 환경이어도, 라이브러리 디렉토리(D:\TEMP\DMR_전략팀)가 다르거나 불러오기 파일 위치(D:\Trea_SYSOP\Enterprise Guide를 이용한 Business Analytics)가 다르면 실행되지 않습니다.
참조 : [Business Analytics Using SAS Enterprise Guide and SAS Enterprise Miner: A Beginner's Guide]
Registration is now open for SAS Innovate 2025 , our biggest and most exciting global event of the year! Join us in Orlando, FL, May 6-9.
Sign up by Dec. 31 to get the 2024 rate of just $495.
Register now!