Given the raw data record DEPT:
The following SAS program is submitted:
data bonus;
infile 'dept';
input dept$ 1-11 number 13-15;
[insert statement here]
run;
Which SAS statement completes the program and results in a value of 'Printing750' for the DEPARTMENT variable?
A. department = dept || number;
B. department = left(dept) || number;
C. department = trim(dept) number;
D. department = trim(dept) put(number,3.);
정답은 D입니다.
위 출력문의 값이 'Printing750'일려면 [insert statement here]에 무엇을 넣어야 하는가를 물어보는 문제입니다.
먼저 data 구문의 input문부터 살펴봅시다.
input문은 dept의 값 'Printing 750'을 각 dept, number 변수로 나눠서 받습니다.
dept 뒤에 $가 작성되었으므로 문자형변수이며 첫번째부터 11번째까지 받습니다.
즉, 'Printing '(공백 포함임)을 받는 거라고 확인하시면 됩니다.
그리고 number는 수치형 변수로 13번째부터 15번째, '750'을 받습니다.
이제 이 두 변수를 가지고 department 변수를 할당할 건데, 이 때 deparment의 값은 'Printing750'으로 만들면 됩니다.
||: 문자와 문자를 연결해줍니다. 하나라도 숫자면 안됩니다.
trim(변수): 변수값에서 공백을 제거합니다.
put(변수, 길이): 수치형 변수를 문자형 변수로 변환하여 줍니다.
input(변수, 길이): 문자형 변수를 수치형 변수로 변환하여 줍니다.
Printing750이 되기 위해선 dept 변수의 값 중 공백을 제거해야 합니다. 따라서 trim이 사용되어야 합니다.
그리고 price가 수치형 변수이기 때문에 문자형 변수로 변환해줘야 합니다. 이에 put을 사용해줘야 합니다.
이 모든 조건을 만족하는 답이 D입니다.