로그인   |  회원가입  |  사이트맵  |  Contact Us
  아이디 저장하기
 
홈 > SAS Tech & Tip > SAS Programming 활용하기
[SAS 프로그래밍] ARRAY 활용하기 2 2017.09.20
MYSAS 시샵 75 0
http://www.mysas.co.kr/sas_tiptech/a_question.asp?b_no=7441&cmd=content&bd_no=5

[SAS 프로그래밍] ARRAY 문 활용하기 2

 


안녕하세요^^

지번시간에 이어서 오늘은 array를 응용하여 라벨을 변수 값으로 생성하는 방법에 대해 알아보겠습니다.

 

1. array 기본 개념 및 활용 (do array)

2. array 응용 - 라벨 변수 값으로 생성하는 방법 (call label)

 



먼저, 지난 시간에 배웠던 array 문에서 할당하는 변수명에 _numeric_, 혹은 _character_로 쓰게 되면, 사용하는 데이터 셋에 있는 숫자형 변수값 전체와 문자형 변수값 전체가 array문에 할당되게 됩니다.


 

 


오늘 공부할 내용은, 새로운 변수를 만들어 기존에 라벨로 사용되던 값을 넣고, 각 관측값들도 라벨과 맞추어 새로운 변수로 할당되게 하는 방법입니다. 이는 Proc transpose와 비슷한 결과를 나타내게 됩니다.


위의 내용들과, 지난 시간 내용인 array + do loop을 함께 활용하는 방법을 예제를 통해 알아보겠습니다.



예제에 사용할 데이터는 SAS내의 데이터로 [sashelp]-[class]데이터 입니다.

아래와 같이 이름, 성별, 나이, 키와 몸무게의 변수들로 이루어져 있습니다.


 

 

 

 

 

 

먼저 array문에 모든 숫자형 변수들 (나이, , 몸무)를 할당합니다.

ARRAY num{*} _numeric_;

그 다음, 기존의 라벨들을 category라는 변수에, 숫자형 변수들을 value라는 새로운 변수에 넣기 위해 새로운 변수들의 length를 먼저 지정해 줍니다.


여기서 주의할 점은 array 문을 length지정보다 먼저 지정해야 합니다.

Length를 먼저 쓰게 되면 새로 만들어진 숫자형 변수 valuearray 에 같이 포함되기 때문입니다.

 


다음으로 do 구문에서 CALL을 사용하여 아래와 같이 지정하게 되면

CALL LABEL(num{i}, category);

‘num 배열의 값의 라벨이 순서대로 category에 할당되게 됩니다.

그 다음으로 value 라는 변수에는 ‘num배열의 값이 순서대로 할당됩니다.

 


결과는 proc transpose를 한 결과와 비슷하게 아래와 같이 나타나게됩니다.



 

 

 

 


이상으로 arraycall lable을 사용하여 라벨로 새로운 변수를 만드는 방법에 대해 알아보았습니다.


감사합니다. ^^


 

 

 

 

 

 

 

 
 
 
 
 [SAS 프로그래밍] ODS Statement
 [SAS 프로그래밍] ARRAY 활용하기 1