#92.
ONE TWO
NUM CHAR1 NUM CHAR2
------------------ ------------------
1 A1 2 X1
1 A2 2 X2
2 B1 3 Y
2 B2 5 V
4 D
The following SAS program is submitted creating the output table THREE:
proc sql;
create table three as
select one.num, char1, char2
from one, two
where one.num = two.num;
quit;
THREE
NUM CHAR1 CHAR2
-----------------------
2 B1 X1
2 B1 X2
2 B2 X1
2 B2 X2
Which one of the following DATA step programs creates an equivalent SAS data set THREE?
[정답] D
data three;
set one;
do i = 1 to numobs;
set two(rename = (num = num2)) point = i nobs = numobs;
if num2 = num then output;
end;
[풀이]
1부터 관측수까지 단순반복하는 DO-TO 반복문을 사용하였습니다.
SET: 1. 일대일 가로 결합 , 2. 상하 자료결합(data set 쌓기), 3. 상하 자료 결합(data set 쌓기)를 할 수 있습니다.
NOBS옵션: SAS데이터셋에 있는 관측 수 값을 할당하는 것으로 Numobs를 변수명으로 사용했습니다.
POINT옵션: 임시 변수를 지정하는데, 이 변수의 숫자 값은 어떤 관측치를 읽는 것인지를 결정합니다. SET STATEMENT안에 POINT옵션을 사용하여, 번호(숫자)값을 갖는 I라는 임시변수를 생성한 것을 볼 수 있습니다.
RENAME문장을 이용하여 변수명을 변경하였습니다. TWO TABLE의 NUM변수명을 NUM2변수명으로 변경하였습니다.
IF ~ THEN 조건문과 OUTPUT문장(현재 변수 값들을 데이터에 저장하라입니다.)을 사용하여 num2와 num이 같으면 데이터에 저장하였습니다.
93.The following SAS program is submitted:
data two;
y = '2';
run;
%let x = 10;
%let var = y;
data one;
set two (keep = &var);
z = &var * &x;
run;
Which one of the following is the value of the variable Z when the program finishes execution?
[정답] B
[풀이]
SAS MACRO를 직접 입력하기 위해서는,
%LET XXX=YYY; : 매크로 XXX가 YYY로 출력되는 매크로를 생성합니다.
매크로를 생성할 때는 %LET명령어를 통해 만듭니다. 반드시 %를 붙여야 매크로 칼럼 생성으로 인식합니다.
&XXX. :매크로 XXX를 출력합니다.
&명령어를 통해 %LET 명령어로 생성된 매크로 변수값을 불러올 수 있습니다. &명령어를 매크로 trigger(방아쇠)라고도 합니다.
모든 매크로는 &를 통해 불러옵니다.
%PUT &=XXX, : 매크로 출력값을 로그창을 통해 확인합니다.
%put은 표로 이뤄진 결과값을 출력하는게 아니라 로그 기록에 결과값을 출력하는 명령어입니다. 매크로 칼럼과 결과값을 로그창에서 확인할 수 있습니다.
keep문은 결과 데이터셋에서 남기고 싶은 변수를 선택하는 함수입니다.
문법은 ‘KEEP Variable-list;’입니다. Variable-list에 넣은 변수를 제외하고는 제거합니다.
z값은 &var(=’2’) * &x(=10)으로 매크로 변수 var은 문자로 입력이 되있고, %x는 숫자로 입력되어있어, 문자 * 숫자로 인식할 수 있습니다.
하지만, sas data setp은 자동으로 문자를 숫자로 바꿔 계산을 수행합니다.
94. The SAS data set TEMP has the following distribution of values for variable A:
TEMP
A Frequency
--------------------
1 500,000
2 500,000
6 7,000,000
8 3,000
[정답] C
data new;
set temp;
if a = 6 then
b = ‘Large’;
else if a in (1, 2) then
b = ‘Medium’;
else if a=8 then
b = ‘Small’; run;
run;
[풀이]
데이터 세트에서 발생하는 순서대로 가장 많이 발생하게 하는 조건을 우선적으로 하여야 합니다.
Frequency가 가장 많은 수부터 적은 수까지 데이터세트가 구성되어야 합니다.
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.