SAS Base, A00-211 Crambible
SAS 베이스 자격증
QUESTION NO: 69
The following SAS program is submitted:
data work.total;
set work.salary(keep = department wagerate);
by department;
if first.department
then payroll = 0;
payroll + wagerate;
if last.department
run;
The SAS data set WORK.SALARY, currently ordered by DEPARTMENT, contains 100 observations for each of 5 departments.
What is the result?
A. The WORK.TOTAL data set contains 5 observations.
B. The WORKTDTAL data set contains 100 observations.
C. The WORKTOTAL data set contains 500 observations.
D. The program fails to execute due to errors.
by department; 라고 하면 set 구문에서 department와 wagerate 변수를 가져오는데 by라는 명령어를 통해 department라는 변수를 지정하게되면 이때 자동적으로 first / last 값이 생기게 됩니다. 비슷한 문제 그 전에몇번 다뤘었죠. 즉, department 값이 A부서 여러개, B부서 여러개 이렇게 정렬이 된 상태니까 A부서 여러개 나올때의 첫번째 값이 first로, A부서의 마지막 값이 last 값으로 PDV상에 입력이 됩니다. 물론 이것들은 결과값으로 나오지는 않고요.
문제상에서 각 5개의 부서가 있고 각 부서마다 100개의 observations이 있다고 하네요.
if first.department
then payroll = 0;
payroll + wagerate;
여길 보면, department가 첫번째 값이면, payroll이라는 변수를 만들어 0이라는 값을 지정해주고 여기에 wagerate를 더하라는 얘기입니다.
if last.department 보면 각 부서별 observation의 마지막 값을 보여주라는 얘기입니다. 얘네만 결과로 보여달라는 얘기라서 답은 A입니다.
Answer: A
'SAS > Base Programmer' 카테고리의 다른 글
[A00-211, Crambible] SAS Q71 - print, firstobs (0) | 2017.06.01 |
---|---|
[A00-211, Crambible] SAS Q70 - find (0) | 2017.06.01 |
[A00-211, Crambible] SAS Q68 - put @ (0) | 2017.06.01 |
[A00-211, Crambible] SAS Q67 - error 문자형/숫자형 (0) | 2017.05.31 |
[A00-211, Crambible] SAS Q66 - ODS, html (0) | 2017.05.30 |