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 


반응형

+ Recent posts