[BASE SAS기초] Subsetting Observations
안녕하세요^^
오늘은 WHERE 문장을 사용해서 SUBSET을 만드는 것을 공부하겠습니다.
이번 시간의 WHERE절은 지난시간 배운 IF 문과 매우 비슷하니, 비교해보시면서 공부하셔도 좋을 것 같습니다.
오늘 사용할 데이터 역시 지난시간에 사용한 sashelp 라이브러리에 있는 heart 데이터를 사용하겠습니다.
WHERE문장은 지정된 특별한 조건에 합치하는 관측들로만 선별적으로 읽어들일 때 사용합니다.
일반적인 form은 WHERE where-expression; 입니다.
Where-expression에는 수식을 지정하는데 산술연산자와 비교연산자, 논리연산자를 사용할 수 있습니다. 또한 특수한 비교연산자 IN도 사용 가능합니다
(1) 산술연산자는 다음 다섯 가지가 있습니다.
산술연산자 |
기능 |
+ |
더하기 |
- |
빼기 |
* |
곱하기 |
/ |
나누기 |
** |
지수 |
(2) 비교연산자에는 다음 일곱 가지가 있습니다.
비교연산자 |
비교 기능 |
|
기호 |
단축문자 |
|
= |
EQ |
같다(Equal to) |
^= |
NE |
같지 않다(Not Equal to) |
> |
GT |
크다(Greater Than) |
< |
LT |
작다(Less Than) |
>= |
GE |
크거나 같다(Greater than or Equal to) |
<= |
LE |
작거나 같다(Less than or Equal to) |
|
IN |
어느 하나와 같다 |
예를들어, weight가 150 초과인 값들만 모아서 subset을 만드는 경우를 생각해 봅시다.
위와 같이 weight변수에 비교연산자 >를 이용하면 weight가 150 초과인 값들을 모아서 subset을 만드는 것을 확인할 수 있습니다.
(3) 논리 연산자에는 다음 세 가지가 있습니다.
논리연산자 |
기능과 진리값 |
|
기호 |
단축문자 |
|
& |
AND |
좌우 수식이 둘 다 참이면 1, 아니면 0 |
| |
OR |
좌우 수식이 둘 다 거짓이면 0, 아니면 1 |
^ |
NOT |
우측 수식이 참이면 0, 거짓이면 1 |
예를들면, status가 ‘Dead’이면서 BP_status가 ‘High’인 subset을 만드는 경우를 생각해 봅시다.
위와 같이 논리 연산자 and를 사용하면 status가 ‘Dead’이면서 BP_status가 ‘High’인 subset을 만드는 것을 확인할 수 있습니다.
또한, 이번 시간의 WHERE절이 지난시간 배운 IF 문과 매우 비슷하다고 언급한 것을 기억하시나요?
다음의 두 문장은 같은 결과를 내는 문장입니다.
두 문장은 같은 결과를 내지만, 두 문장은 효율성에서 차이를 나타냅니다.
IF를 사용하면 관측값들이 DATA 단계로 들어온 뒤에 조건에 맞는 관측들을 고르는 반면,
WHERE문장은 관측값들이 DATA 단계로 들어오기 전에 조건에 맞는 관측값들을 미리 고르므로 WHERE문장이 훨씬 효율적이라고 할 수 있습니다.
이상 where문장에 대해 알아보았습니다. 잘 따라오셨나요? 궁금하신 사항에 관해서는 댓글로 질문을 남겨주세요~
다음 시간에는 데이터를 병합하는 방법들에 대해 공부하도록 하겠습니다.
읽어주셔서 감사합니다^^
Catch the best of SAS Innovate 2025 — anytime, anywhere. Stream powerful keynotes, real-world demos, and game-changing insights from the world’s leading data and AI minds.