SAS Base, A00-211 Crambible 

SAS 베이스 자격증 


QUESTION NO: 63


Given the SAS data set ONE: 

ONE

X Y Z 

1 A 27

1 A 33

1 B 45

2 A 52

2 B 69

3 B 70

4 A 82

4 C 91 


The following SAS program is submitted: 


data work.two;
  set work.one;
  by x y;

  if first.y;
run;


proc print data = two noobs; 

run;


Which report is produced? 


A. X Y Z 1 A 27 1 B 45 2 A 52 2 B 69 3 B 70 4 A 82 4 C 91

B. X Y Z 1 A 33 1 B 45 2 A 52 2 B 69 3 B 70 4 A 82 4 C 91

C. X Y Z 1 B 45 2 A 52 2 B 69 3 B 70 4 A 82 4 C 91

D. The PRINT procedure tails because the data set TWO is not created in the DATA step.


ONE 데이타를 불러와서 TWO라는 데이터를 만들려고 합니다. 이때 by로 X, Y라는 변수를 지정했습니다. 이렇게 set & by를 이용해서 변수를 정하면, pdv상에 first / last 값이 생기게 됩니다. 그러니까 X변수의 첫번째 값, 마지막 값, Y변수의 첫번째 값, 마지막 값이 따로 생기는데요.


그러니까 first X 에서 값이 X라는 변수의 observation 1이라는 값이 첫번째이면 1로, 첫번째가 아니면 0으로 표시됩니다. 그러니까 일종의 표시라고 생각하면 되어요. obervation 2라는 값이 첫번째로 나오는애를 1로, 아니면 0으로 표시하는겁니다. 


그러면 last X는 first X이니까 아래 표와 같고요. 


이때 First Y를 살펴봅시다. X를 고려한 후에 Y를 생각해야하야합니다. 빨간색 X값이 1인 상태인 경우, Y를 봤을때 A가 처음 나왔으니 1로 적고, 또 A가 나왔으니 0, 새로 B가 나왔으니까 1로 적어둡니다. 이번에 X값이 2인 상태인 경우, Y값을 봤을때 A가 처음 나와서 1로 적고, 그 다음 B가 새로 나왔으니 또 1로 적고,...이렇게 진행하면 다음과 같이 됩니다. 

X

first X 

last X

First Y 

 1

 A

 27

 1

 0

 1

 1

 A

 33

 0

 0

 0

 1

 B

 45

 0

 1

 1

 2

 A

 52

 1

 0

 1

 2

 B

 69

 0

 1

 1

 3

 B

 70

 1

 1

 1

 4

 A

 82

 1

 0

 1

 4

 C

 91

 0

 1

 1


회색부분은 물론 결과물에서 보여지지는 않습니다. 


이때 if First.Y 이렇게 선택하고 해당에 대해 결과물을 프린트하라는 명령어입니다. if First.Y 라는 의미는 first.Y = 1 이라는 얘기입니다. 기울여서 쓴 값을 제외하고 나머지 다 1이기때문에 얘네들이 결과값으로 나오게 되어요.   


Answer: A 



반응형

+ Recent posts