[BASE SAS기초] Reading SAS Data Sets (2)
LIBNAME libref ‘SAS-data-library’;
DATA output-SAS-data-set;
SET input-SAS-data-set;
WHERE where-expression;
KEEP variable-list;
LABEL variable=’label’
variable=’label’
variable=’label’;
FORMAT variable(s) format;
RUN;
오늘은 이어서 위의 BASE SAS CODE에서WHERE문장과 KEEP문장을 알아보도록 하겠습니다.
기호 |
의미 |
예시 |
= 또는 EQ(equal) |
같다 |
Name 변수의 값이 Jones, C.인 관측치만 추출하기 Where name = ’Jones, C.’; |
^= 또는 NE(not equal) |
같지 않다 |
Temp 변수의 값이 212가 아닌 값들 추출하기 Where temp ne 212; |
> 또는 GT(greater than) |
크다 |
income변수의 값이 20000초과인 값들 추출하기 Where income > 20000; |
< 또는 LT(less than) |
작다 |
Partno 변수 값이 BG05미만인 관측치 추출하기 Where partno lt “BG05”; |
>= 또는 GE(greater equal) |
크거나 작다 |
Id 변수의 값이 1543이상인 관측치 추출하기 Where id >= ‘1543’; |
<= 또는 LE(less equal) |
작거나 같다 |
pulse변수의 값이 85이하인 관측치 추출하기 Where pulse le 85; |
예시를 통해 이해가 되셨나요? 😄
다음은 복합 WHERE 수식 지정이 가능하도록 하는 연산자를 알아보겠습니다.
연산자 |
의미 |
AND 또는 & |
그리고, 둘 다의 의미 |
OR 또는 |(SHIFT+\) |
또는, 둘 중 어느 한쪽의 의미 |
AND, OR 연산자에 대해서는 예시를 보면서 자세히 알아보도록 하겠습니다.
▶ 나이가 55이하이고 혈압이 75이상인 관측치 추출하기
where age<=55 and pulse>75;
▶ area가 ‘A’이거나 region이 ‘S’인 관측치 추출하기
where area=’A’ or region=’S’;
▶ ID가 1050초과이고 state가 NC인 관측치 추출하기
where ID>1050 and state=’NC’;
▶같은 변수의 관측치를 분석할 때에는
각각의 표현에 변수이름을 되풀이 해서 지정하시면 됩니다.
where actlevel=’LOW’ or actlevel=’MOD’;
where fee=124.80 or fee=178.20;
▶양자택일일 경우 또는 그 이상의 특정 값을 갖는 관측치 추출하기
▷ actlevel변수의 값이 LOW 또는 MOD값을 갖는 관측치 추출하기
(문자는 따옴표를 써주어야 합니다.)
where actlevel in (‘LOW’, ‘MOD’);
▷ fee변수의 값이 124.80 또는 178.20 또는 182.20 값을 갖는 관측치 추출하기
where fee in (124.80, 178.20, 182.20);
▶복합적인 수식의 값을 제어하기 위해선 괄호로 묶어 사용할 수 있습니다.
where (age<=55 and pulse>75) or area=’A’;
where age<=55 and (pulse>75 or area=’A’);
▶특정 문자를 포함하는 관측치 추출하기
▷ sales변수의 값들 중 Rep라는 문자를 포함하는 관측치 추출하기
where sales contains ‘Rep’;
▶특정 패턴을 포함하는 관측치 추출하기
▷ custname변수의 값에서 두 번째 자리부터 KIM이라는 글자가 있고
그 이후에는 어느 길이의 문자가 오거나 또는 아무 문자가 오지 않는 관측치 추출하기
( _ : 1byte를 의미함, 영어 한 글자에 해당
% : 어느 길이의 문자가 있거나 또는 없어도 된다는 것을 의미함 )
where custname like ‘_KIM%’;
2. KEEP문장, DROP문장
KEEP문장은 특정 변수만을 남기고 싶을 때 사용하는 문장입니다.
만일 STORE이라는 data set에 storeid(지점 아이디), tele(지점 전화번호),
sales(매출), n_cust(고객수)라는 촐 4개의 변수가 있다고 가정해 보겠습니다.
그런데 우리의 관심사가 지점 아이디와 매출이라면,
tele와 n_cust변수는 data set에 포함시키지 않아도 됩니다.
이에 대한 code를 살펴보도록 하겠습니다.
data new_data_set;
set store;
keep storied sales;
where sales > 80000;
run;
위의 코드를 해설해보면 다음과 같다.
store이라는 sas data set을 불러와서
sales라는 변수의 값이 80000을 초과하는 관측치만 추출하여
storeid와 sales변수로 구성된 new_data_set을 생성하는 code이다.
또한 DROP문장은 KEEP문장과는 반대의 기능을 갖고 있습니다.
즉, 생성하지 않은 변수를 적어 주시면
해당 변수들을 제외한 DATA SET이 생성됩니다.
이로써WHERE문장과 KEEP문장에 대해 알아 보았습니다 😄
다음 시간에는 LABEL문장, FORMAT문장에 대해 알아보도록 하겠습니다.
감사합니다 😄
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!