Chapter 4 Combining Tables Vertically Using PROC SQL

    데이터 테이블을 아래 그림처럼 수직으로 합칠때에 관한 내용입니다. PROC SQL을 이용해서 수직으로 데이터를 합칠때, 연산자를 사용해서 어떤 방법으로 합칠지 select 과 select 사이에 정해줘야하는데요. 이때 4개의 연산자로는 EXCEPT, INTERSECT, UNION, OUTER UNION이렇게 있습니다. 




    아래 그림을 보면 어떤 내용인지 딱 감이 옵니다. 


    Except는 ~ 제외하고 라는 뜻을 가지고 있죠. 테이블 1의 행 중에서 테이블 2에서 나오는걸 제외한 행만 보여줍니다.

    Intersect는 교집합이란 뜻을 가지고 있는데, 테이블 1과 2에서 동시에 나오는것만 보여주고요. 

    Union은 합집합이란 뜻을 가지고 있어서 테이블 1과 2에 나오는 모든 행을 나오게 하고요. 이때 특정 열(column)이 데이터 테이블 1, 2에 모두 나올때 말합니다. 

    Outer Union은 합집합인데 서로 겹치는 열이 없을때 사용하는거죠. 



그럼 하나하나 살펴보도록 하죠. 

EXCEPT Operator 

Except 연산자는 첫번째 데이터 테이블에서는 Unique한 행만 선택되고, 그리고 두번째 테이블에서 있지 않은 행만 보여지게 됩니다. 그리고 합치려는 데이터에서 X라는 열이 중복으로 나타나야겠죠. 위에 그림보면 더 이해가 빠르겠죠? 


아래 예제보면 X라는 변수가 공통적으로 나타나죠. ne이라는 데이터테이블에 1과 a 라는 변수값이 중복되어 나타납니다. 그래서 박스 안에 결과값보면 중복되는 값 중 하나는 삭제되어 나타나게 됩니다. 


그래서 결과값으로 나올때의 과정을 살펴보면 첫번째 데이터 테이블에서 중복된 값이 있는지 확인하고요. 그런 다음에 두번째 데이터 테이블의 값과 매칭되는게 있는지 살펴보게 됩니다. 그래서 매칭이되면 지워지게 되는거죠. 



except 함수에 all 을 넣으면 One 데이터 테이블에 중복 행들이 제거되지 않고 다 같이 보여지게 됩니다. 


반면 except 함수에 corr (corresponding) 을 넣으면 one과 two라는 데이터테이블에서 서로 같은 이름을 가진 변수 중 두번째 데이터 테이블에서 보여지지 않은 값만 나오게 됩니다. 



물론 all 과 corr 다 같이 사용할 수도 있습니다. 데이터 테이블 중 공통적으로 나오는 변수에서, 두번쨰 데이터 테이블에서 나타나지 않는 것만 보여지게 됩니다. 중복된 값이 제거되지 않은채로요. 


UNION Operator 

Union operator같은 경우 종복된 값은 제거되고요. 두개의 데이터 테이블이 수직적으로 합치게 되는데, 결과값은 첫번째 불러오는 데이터를 기준으로 변수이름 값을 가지게 되죠. 결과값 보면 B라는 변수이름이 아니라 A라고 되어있죠. 



아래 이미지는 union all, union corr, union all corr 이라고 선택했을때의 결과값입니다.  쉬운내용이니 설명은 생략할게요. 



OUTER UNION Operator 

Outer Union에 대한 예제이고요. 아래 이미지 보면 금방 이해가니 이것도 설명 생략합니다.


#SAS advanced programming, SAS proc sql, 자격증, prep guide

반응형

+ Recent posts