7.The following SAS program is submitted:
%macro check(num=4);
%let result=%eval(&num gt 5);
%put result is &result;
%mend;
%check (num=10)
What is written to the SAS log?
A. result is true
B. result is 10 gt
C. result is 1
D. result is 0
[정답] C
[풀이]
%macro check(num=4);
-> 매크로check 생성하고, 매크로변수 num변수 값 4를 생성.
%let result=%eval(&num gt 5);
-> %let을 사용해서 매크로 result가 %eval(&num gt 5)로 출력되는 매크로를 생성합니다.
-> &num : 매크로 num 출력
-> %eval: 수리적 연산이나 논리적 연산을 수행합니다. 여기서는 사칙연산기호가 없으므로 논리적 연산을 수행합니다.
-> %eval: 논리적 연산으로 0 또는 1의 값을 계산합니다.
*ppt에는 %let result=%eval(&nm gt 5); 으로 작성되어 있으나 이는 틀린 표기입니다.
%put result is &result;
-> [문법] %PUT text;
-> %PUT명령어를 통해 매크로 칼럼과 결과값을 로그창에서 확인 가능하다.
-> %PUT: SAS log에 문자를 써주는 역할
-> &result: 매크로 result를 출력
%mend;
-> 매크로 종료
%check (num=10)
->%eval의 논리적 연산으로 10 > 5이면 1의 값을 반환하고, 아니면 0값을 반환합니다.
8.The following SAS program is submitted:
data temp;
length a 1 b 3 x;
infile 'file reference';
input a b x;
run;
*DUMP PDF에는 length 1 b 3 x; 로 나와 있으나 이는 틀린 잘못된 기입입니다.
What is the result?
A. The data set TEMP is not created because variables A and B have invalid lengths
B. The data set TEMP is created, but variable X is not created
C. The data set TEMP is not created because variable A has an invalid length
D. The data set TEMP is created and variable X has a length of 8
[정답]C
[풀이]
length 함수에 관한 질문입니다.
length는 변수길이를 정의하는 문장으로 Length variable(s) ($l)ength; 입니다.
문자형 변수에는 [$length], 숫자형 변수에는 [length]
a변수는 숫자형 변수 1자리까지 읽고,
b변수는 숫자형 변수 3자리까지 읽고,
x변수는 숫자형 변수 8자리까지 읽는다 (default가 8자리까지로 생략가능합니다.)
하지만 숫자형 변수는 최소 3자리에서 8자리까지 만들어집니다.
그래서 1자리까지 읽는 숫자 a변수는 틀린 문법입니다.
9.Given the SAS data sets ONE and TWO:
The following SAS program is submitted:
Proc sql;
Select two.*,budget from one <insert JOIN operator here> two on one.year=two.year,
Quit;
The following output is desired:
Which JOIN operator completes the program and generates the desired output?
A. FULL JOIN
B. INNER JOIN
C. LEFT JOIN
D. RIGHT JOIN
[정답] A. FULL JOIN
[풀이]
*테이블 조인 문법
*2개의 테이블 join 방법
INNER JOIN - 결과값이 일치하는 것만 조인
FULL JOIN - 왼쪽, 오른쪽 테이블의 값이 일치여부와 상관없이 모두 조인
LEFT JOIN - 왼쪽 테이블 기준으로 조인, 오른쪽 테이블에 일치하는 값이 없어도 왼쪽테이블의 값은 모두 가져온다.
RIGHT JOIN - 오른쪽 테이블 기준으로 조인.
CROSS JOIN - 아무런 조건이나 제약사항 없이 양쪽을 있는 그대로 연결
결과문을 보면, one테이블과 two테이블의 year이 일치하는 것 끼리 조인과 two테이블에 일치 하지 않는 (2003)까지 조인된 결과.
그러므로, FULL JOIN.
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Lock in the best rate now before the price increases on April 1.