BookmarkSubscribeRSS Feed

[SAS 프로그래밍] 레이블(label) 응용하기 2

Started ‎06-17-2020 by
Modified ‎06-23-2020 by
Views 5,422

[SAS 프로그래밍] 레이블(label) 응용하기 2

 

 

안녕하세요^^

 

 

지난 시간에는 레이블에 포함된 유용한 정보를 이용하여 응용하는 방법들에 대해 알아보았습니다.

이번 시간에는 ‘레이블 응용하기’ 두 번째 시간으로 레이블을 하나의 변수로 추출하는 방법들에 대해 알아보겠습니다.

 

 

 

▶ 레이블을 하나의 변수로 추출하기1

 

레이블에 유용한 정보가 포함되었기 때문에, 레이블을 변수로 추출하는 예제를 다뤄보겠습니다.

 

 

▷ 데이터는 sashelp 라이브러리의 ‘class’ 자료를 사용합니다.

▷ 기존 자료의 레이블을 변경하고

    (name변수: ‘Student’s name’, weight변수: ‘Weight in IB’, height변수: ‘Height in Inch’)

▷ ‘label’ 이라는 변수로 레이블을 추출해보도록 하겠습니다.

 

 

먼저 sashelp 라이브러리의 ‘class’ 자료의 레이블을 살펴보겠습니다.

앞선 ‘레이블 생성하기’ 자료에서 살펴봤듯이, PROC CONTENTS 프로시저를 사용하여 확인할 수 있습니다.

 

다운로드 (99).png

 

다운로드 (100).png

 

기존자료의 변수 name, weight, height의 레이블을 label 문장을 사용하여 변경합니다.

 

다운로드 - 2020-06-17T183732.789.png

 

다운로드 - 2020-06-17T183734.254.png

 

간단하게 PROC CONTENTS 프로시저를 사용하여 ‘label’이라는 변수로 레이블을 추출할 수 있습니다.

PROC CONTENTS의 OUT=(새로운 데이터셋 이름) 옵션을 사용하면 변수이름, 출력형식 길이, 입력형식 길이 등 모든 변수에 대한 정보가 데이터셋으로 만들어집니다.

 

특히, ‘label’이라는 이름으로 변수 레이블이 담긴 변수가 생성됩니다.

따라서 keep을 사용하여 ‘label’ 변수만 남겨 놓으면 다음과 같이 레이블을 하나의 변수로 추출할 수 있게 됩니다.

 

 

다운로드 - 2020-06-17T183735.677.png

 

다운로드 - 2020-06-17T183736.965.png

 

 

▶ 레이블을 하나의 변수로 추출하기2: Call label 이용하기

 

CALL LABEL은 CALL SYMPUT과 매우 유사한 형식을 갖습니다.

CALL LABEL은 호출에 사용되는 명령문으로 DATA step에 삽입될 수 있으며 할당(assignment)문장과 유사합니다.

  

 call label(svar, namelabel);

 

- ‘svar’ 자리에는 레이블을 출력할 변수명을 입력하고,

- ‘namelabel’ 자리에는 레이블을 저장할 변수의 이름을 입력합니다.

- 레이블의 길이에 맞게 namelabel의 길이를 설정하는 것이 좋습니다. (최대 256 character)

- ‘svar’에 레이블이 없는 경우 변수 이름이 ‘namelabel’에 저장됩니다.

 

 

▷ 데이터는 위의 예제에서 생성한 ‘class’ 자료를 사용합니다.

▷ call label을 사용하여 ‘create_labvar’ 자료에 ‘lab_var’라는 변수로 레이블을 추출해보도록 하겠습니다.

 

 

data creat_labvar(keep=lab_var) : DATA step으로 ‘creat_labvar’라는 데이터를 생성하며, ‘lab_var’ 변수만을 남겨둡니다.

set class : ‘class’ 자료를 가져옵니다.

length lab_var $30 : lab_var 변수의 길이를 character 30자로 설정합니다.

array char_var(*) _character_ : 모든 문자형 변수(_character_)를 char_var라는 array로 입력합니다.

array num_var(*) _numeric_ : 모든 수치형 변수(_numeric_)를 num_var라는 array로 입력합니다.

do i=1 to dim(char_var) : char_var에 저장된 변수의 수(즉, 모든 문자형 변수의 개수)만큼 반복문을 시행합니다.

call label(char_var(i), lab_var) : lab_var라는 변수에 char_var(i)의 레이블 값을 불러옵니다.

output : 출력합니다. (모든 변수의 레이블을 보기 위해서 반드시 필요함)

end : 반복문을 종료합니다.

 

수치형 변수에 대해서도 마찬가지로 적용합니다.

출력된 결과를 살펴보면 문자형 변수의 레이블(obs=1~3)이 먼저 기록되고 수치형 변수의 레이블(obs=4~6)이 기록된 것을 확인할 수 있습니다.

 

다운로드 - 2020-06-17T183738.277.png

 

다운로드 - 2020-06-17T183739.685.png

 

 

▶ 레이블을 하나의 변수로 추출하기3: vlabel 이용하기

 

또 다른 방법은 VLABEL 기능입니다.

 

 

vlabel(varname);

 

- 'varname’은 레이블이 있는 변수의 이름을 입력합니다.

- 이 함수는 Call label과 같은 방식으로 수행하지만, 표현식이 함수 내에서 인수로 사용될 수 없습니다.

- 직접 변수를 입력하거나 array를 사용할 수 있습니다.

- VLABEL은 길이(length)가 지정되지 않은 새로운 변수에 길이 200을 기본으로(default) 할당합니다.

- 길이를 조정하고 싶다면 length 문장을 사용하여 길이를 지정할 수 있습니다. .

 

 

▷ 위의 두번째 예제와 동일한 과정을 call label 대신 vlabel을 사용하여 수행해보도록 하겠습니다.

 

 

모든 코드는 위의 두번째 예제와 동일합니다.

그러나 do~end 반복문 내에 들어가는 call label을 vlabel로 바꾸어 작성하였습니다.

작성방법은 아래와 같습니다.

 

새로운 변수이름 = vlabel(레이블이 있는 변수 or array)

 

즉, ‘lab_var’ 변수에 char_var array와 num_var array에 있는 변수들의 레이블을 저장합니다.

결과는 위의 두번째 예제와 동일합니다.

 

다운로드 - 2020-06-17T183741.348.png

 

다운로드 - 2020-06-17T183739.685.png

 

 

 

 

이상으로 레이블을 하나의 변수로 추출하는 방법에 대해 알아보았습니다.

감사합니다^^

 

 

[출처] http://support.sas.com/resources/papers/proceedings09/067-2009.pdf

 

 

Version history
Last update:
‎06-23-2020 05:07 AM
Updated by:
Contributors

sas-innovate-white.png

Our biggest data and AI event of the year.

Don’t miss the livestream kicking off May 7. It’s free. It’s easy. And it’s the best seat in the house.

Join us virtually with our complimentary SAS Innovate Digital Pass. Watch live or on-demand in multiple languages, with translations available to help you get the most out of every session.

 

Register now!

Article Labels
Article Tags