[SAS 프로그래밍] ARRAY 문 활용하기 1
안녕하세요^^
이번 시간에는 데이터 핸들링에서 자주 사용되는 array 구문에 대해 알아보겠습니다.
1. array 기본 개념 및 활용 (do array)
2. array 응용 - 라벨을 변수 값으로 생성하는 방법 (call label)
Array 는 변수들을 변형 및 가공하기 쉽도록 가상으로 변수들이 있을 공간을 만들어서 넣어 둘 수 있는 함수입니다.
Array statement 정의
ARRAY array-name{number-of-elements}<$> <_temporary_><(initial-calues)> ; |
Array 변수는 단독으로도 사용할 수 있지만 do 구문과 함께 사용하게 되면 더 다양하게 활용할 수 있습니다.
아래의 예제를 통해 살펴보겠습니다.
Array 배열에는 숫자값과 문자값을 모두 넣을 수 있습니다.
위의 예제에서 exam1~exam3은 모두 같은 표현이며, ex1-ex3에 해당하는 숫자값 3개를 포함하게 됩니다. Id는 문자값 student1~3의 문자값을 포함한 배열입니다.
이번엔 do 구문과 함께 활용되는 예제를 살펴보겠습니다.
예제 데이터는 아래와 같은 형태입니다. 총 5번의 시험에 대하여 학생 6명의 점수가 입력되어 있습니다.
각 시험마다 70점이 넘지 못하는 학생의 점수는 결측으로 처리하고, 총 5번의 시험 중 70점을 3번 이상 넘으면 PASS, 넘지 못하면 FAIL로 처리하려고 합니다. 이와 함께, 학생들마다의 총점과 평균점수를 구해보도록 하겠습니다.
먼저 array 배열을 활용하여 5번의 시험 점수를 exam이라는 배열문에 할당하였습니다.
다음으로, do구문을 활용합니다.
do loop가 1부터 배열 exam의 차원만큼, 즉 5까지 (총 5번 시험점수가 있으므로) 돌아가면서 각 시험마다 아래의 입력문들을 시행하게 됩니다.
첫 번째 조건문을 활용하여 시험의 점수가 70점을 넘지 않으면 해당 시험의 점수를 결측처리하였습니다.
만약 첫 번째 학생의 i=1인 경우라면
IF exam{1}<70 THEN exam{1}=. ;
일 것이고, exam{1}의 값은 78점 이므로 결측처리를 하지 않습니다.
두 번째 조건문을 활용하여 70점 이상인 시험이 3번 이상이면 P_F변수에 PASS를, 그렇지 않으면 FAIL을 입력하도록 하였습니다.
만약 첫 번째 학생의 경우라면 5번 시험점수가 모두 70점 이상이므로
n(of exam{*}) = 5가 되고 P_F의 값은 PASS를 갖게됩니다.
각 학생들의 총점 total값과 평균인 mean값은 array에 할당된 값을 활용하여 아래와 같이 계산됩니다.
sum(of exam{*}) = sum(exam{1}, exam{2}, exam{3}, exam{4}, exam{5})
= sum(78, 80, 92, 90, 95)
= 435
n(of exam{*}) = n(exam{1}, exam{2}, exam{3}, exam{4}, exam{5})
= n(78, 80, 92, 90, 95)
= 5
결과는 아래와 같이 나오게 됩니다.
이상으로 array statement와 do loop를 함께 사용하여 활용하는 방법을 배워보았습니다.
이어서 다음 시간에는 array 문을 활용하여 label을 변수값으로 생성하는 방법에 대해 알아보도록 하겠습니다.
감사합니다.^^
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.