안녕하세요. MYSAS입니다.
금주는 조건문의 사용법에 대해서 알아보도록 하겠습니다
목 차
1. Introduction
이번 챕터에서는 의사 결정을 하기 위한 프로그램을 만들 때 쓸 수 있는 도구들을 학습 할 것입니다. 가령, 특정 연령의 집단을 따로 만들어 낼 때, 조건들을 부여하여 만들어야 정확한 집단을 만들어 낼 수 있을 것입니다. 이러한 도구들을 통하여 주어진 데이터를 바탕으로 논리적인 의사결정을 실행할 수 있는 것입니다.
Player |
Score |
Rebound |
Jordan |
42 |
8 |
Pipen |
28 |
11 |
Rodman |
15 |
21 |
- 여기서 변수 하나를 추가하고 싶습니다. 바로 Point라는 변수인데요.
- Score가 40이상이면 Point = score*0.8 + rebound * 1.2
- Score가 40미만이면 Point = Score*1.0 + rebound * 0.8 로 설정하고 싶습니다.
-> 이럴 때 바로 조건문을 사용 하는 것입니다. 일반적인 사용법은 이렇습니다.
우선 하나짜리 조건문은 이렇습니다.
If 조건문THEN 실행문 ;
<ELSE 실행문;>
하나 이상의 조건문은
IF 조건문1 THEN 실행문;
ELSE IF 조건문2 THEN 실행문;
ELSE IF 조건문3 THEN 실행문;
…
<ELSE 실행문;>
실행문이 두개 이상이라면 IF … THEN DO 명령문을 사용합니다.
If 조건문THEN DO;
실행문1 ;
실행문2 ;
…
END;
<ELSE DO;
실행문1;
실행문2;
…
END;>
- 그럼 이제 위의 예제를 코딩 해보겠습니다.
If score < 40 then;
Point= score*1.0 + rebound*0.8.;
else if age > 40 then
Point= score*0.8 + rebount*1.2;
Run;
- 앞서 언급하였듯이 실행문이 두개 이상이라면 IF… THEN DO 명령문을 사용합니다.
- 이번에는 Score가 40이상이면 Role이라는 변수에 Key라고 표시하겠습니다.
- 나머지는 Sub이라고 문자 변수를 표시하겠습니다.
If score < 40 then do;
Point= score*1.0 + rebound*0.8.;
Role = ‘Key’;
End;
else if age > 40 then do;
Point= score*0.8 + rebount*1.2;
Role = ‘Sub’;
End;
Run;
- 만약 어떠한 데이터 안에서 조건을 주고 특정 자료를 빼내고 싶을 때 Data Step에서 다음과 같은 조작이 필요합니다.
(1) Subsetting IF 문장 : Data Step only
(2) WHERE 문장 : Data Step, Proc Step 모두 사용가능
- 단, WHERE 문장을 Data Step에서 사용할 경우 Input용 Data Set에 존재하는 변수에 관해서만 사용이 가능하다는 점을 염두 해야 합니다.
- 다음 예제는, 위의 데이터 ( basketball )에서 Role이 Key인 선수만 뽑아내서 Keyplayer라는 데이터를 따로 만드는 코딩을 보여주는 것입니다.
DATA keyplayer;
SET work.basketball;
Where Role = ‘Key’; /* 또는 if Role = ‘Key’; */
RUN;
l 다음 프로그램을 실행하여 School이라는 임시 SAS Data Set을 만듭니다
DATA school;
input Age Quiz : $1. Midterm Final;
/* 이곳에다가 명령문을 집어넣어 보세요^^ */
datalines;
12 A 92 95
12 B 88 88
13 C 78 75
13 A 92 93
12 F 55 62
13 B 88 82
;
- 문제 : 여기서 IF와 ELSE IF 명령문을 이용하여 다음 세 개의 변수를 만들어 봅니다
수고하셨습니다. 정답은 다음주에 댓글로 달아드리겠습니다.^^ 즐거운 한주 보내세요~
본 자료의 저작권은 sas에 있습니다
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.