BookmarkSubscribeRSS Feed

[BASE SAS기초] Reading SAS Data Sets (2)

Started ‎06-15-2020 by
Modified ‎06-15-2020 by
Views 170

[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문장 알아보도록 하겠습니다.


  1. WHERE 문장

    WHERE 문장은 관측치를 제어할  사용되는 문장으로써,
    PROC PRINT는 데이터 세트 안의 모든 관측치를 출력해주는데
    WHERE문장을 추가해 출력되는 관측치를 제어할  있습니다.

    그럼 먼저 WHERE 문장의 조건을 표현하기 위한 비교 연산자들을 살펴보겠습니다.

 

기호

의미

예시

= 또는 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문장 대해 알아보도록 하겠습니다.
감사합니다 😄



Version history
Last update:
‎06-15-2020 05:54 AM
Updated by:
Contributors

SAS Innovate 2025: Register Now

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!

Article Labels
Article Tags