사이트맵  |  Contact Us
 
홈 > SAS Stories > SAS 활용 노하우
[질문,펌](IN기능관련)이게 도대체 무슨뜻이죠??| 2010.04.20
권용관 5469 0
http://www.mysas.co.kr/sas_club/d_freeboard.asp?b_no=1294&gotopage=6&con=subject&keyword=&cmd=content&bd_no=04&gubun=

data work.empsalary;
set a (in = inemp)
b (in = insal);
if insal and inemp;
run;

 

여기서 insal 과 inemp가 뭘 뜻하는 거죠?

그리고 여기서 in은 변수를 말하는 건가요?

 

아시는분 가르침을 부탁 드립니다.

감사합니다 

출처 : 통계분석연구회 오리발님의 글입니다.  (http://cafe.daum.net/statsas/B3m/12402)


SAS는 인덱스를 이용하지 않는 한, 순차적으로 레코드 하나씩을 읽으면서 데이터를 처리하는데.. set이나, merge 처럼 하나 이상의 데이터셋을 이용하여 새로운 데이터를 만드는 경우에는 현재 읽어서 처리하고 있는 데이터가 어느 source데이터로부터 읽어들인 것이냐에 따라 내부 처리과정에서 다른 조작을 할 필요가 많이 있습니다. 이런 경우에 사용하는 옵션이 바로 in 입니다

in옵션은 독특한 변수를 만드는데... 이렇게 만들어 지는 변수는 다음의 성격을 가집니다.

  1. 현재 처리하고 있는 데이터값이 a에서 읽은 것이라면 inemp가 1(true)을 가지게 되고, a에서 읽은 것이 아니라면 0값을 가집니다. b도 마찬가지로 in= 옵션으로 생성된 특별한 변수인 insal도 b에서 읽은 데이터를 처리하고 있는 상황이라면 1값을, 그렇지 않은 상황에서는 0값을 가집니다.
  2. in으로 만든 변수는 새롭게 생성하려고 하는 데이터셋에는 저장되지 않습니다.

그런데 예시해주신 데이터스텝은 아무런 레코드도 생성하지 않을 것 같네요. 왜냐하면, set은 merge와 달리, 순차적으로 a데이터셋을 처리한 다음에 b데이터셋을 처리하기 때문에.. a와 b가 동시에 읽혀져서 처리되는 상황은 발생하지 않거든요. 따라서 insal과 inemp가 동시에 1(true)값을 가질 수 없으므로.. if insal and inemp; 의 조건을 만족시키는 레코드는 존재하지 않을 것입니다. 결국, in옵션은 set보다는, by와 함께 쓰는 merge에서.. 레코드들의 짝을 맞추어 가면서.. 짝이 맞느냐의 여부를 확인하는 경우에 꼭 필요한 옵션입니다.

출처 : 통계분석연구회 최홍규님의 글입니다.  (http://cafe.daum.net/statsas/B3m/12402)

 
 
휴대폰 번호
휴대폰 인증번호
 
 [질문,펌]감마분포로 중심극한 정리
 [질문, 펌] Informat 관련 질문입니다.