오늘은 SAS가 데이터 셋을 생성하는 방법 PDV(Program Data Vector)에 대해 알아보자.
1. PDV(Program Data Vector) 란?
PDV는 SAS에서 데이터셋을 생성하거나 조작할 때, 데이터의 행(row)을 임시로 저장하는 공간이다.
SAS에서 DATA step이 실행될 때, PDV는 데이터를 한 행씩 읽고 출력하는 역할을 한다.
💡 한 마디로?
PDV는 데이터셋을 생성하는 과정에서 행 단위로 데이터를 처리하는 임시 메모리 공간이다.
SAS가 데이터를 읽고 처리할 때 각 변수의 값을 저장하고 업데이트하는 핵심 구조이다.
데이터가 OUTPUT 단계에 도달하면, PDV의 내용이 데이터셋에 저장된다.
2. PDV의 동작 방식
SAS는 데이터 스텝이 실행될 때 (1) PDV를 생성하고, (2) 데이터를 하나씩 불러와 변수를 할당한 후, (3) OUTPUT을 통해 데이터셋에 저장한다. PDV의 기본적인 동작 흐름은 다음과 같다.
🔹 기본적인 동작 흐름 예시
DATA example; INPUT ID $ NAME $ AGE; PUT"Before PDV: ID=" ID " NAME=" NAME " AGE=" AGE; /*PDV의 작동 순서를 Log에 출력*/ DATALINES; 1 Alice 25 2 Bob 30 3 Charlie 28 ; RUN;
위 코드가 실행될 때 PDV의 동작 과정 (Log)생성된 데이터 셋 : example
DATA step에서 데이터를 선언하였을 때, PDV는 한 행씩 데이터를 불러와 각 변수에 데이터 값을 할당한다.
할당된 값에오류가 없을 경우, 해당 행은 데이터 셋에 입력(Output)되고 PDV는 그 다음행을 불러온다.
📌 PDV에서 발생할 수 있는 주요 오류 유형
PDV는 데이터를 변수에 할당하는 과정에서 여러 가지 오류를 발생시킬 수 있다. 대표적인 오류 유형은 다음과 같다.
Log : _N_=3 행에서 PDV 입력 오류 발출력된 데이터 셋
숫자형으로 선언된 AGE 변수에 문자형 변수 'TWENTY'가 할당된 경우, PDV 단계에서 error가 발생하며 error가 확인된 3번째 행의 AGE 변수는 결측값을 할당 후 output된 것을 알 수 있다.
PDV는 숫자형 변수에 문자형 값이 입력되었을 때 즉시 변환하지 않고, 결측값을 할당한 후 경고를 남긴다. 즉, 오류가 발생해도 프로세스는 중단되지 않고 계속 진행되며, 데이터셋에서 해당 값은 ".(Missing Value)"로 저장된다.
3. PDV의 주요 특징
(1) 자동 초기화
PDV의 변수는 자동으로 초기화된다.
숫자형 변수는 기본적으로 .(결측값)으로 초기화되며, 문자형 변수는 공백으로 초기화된다.
(2) 변수의 정의 순서 유지
PDV는 데이터 스텝 내에서 변수가 정의된 순서를 그대로 유지한다.
(3) 임시 저장 공간 역할
PDV는 데이터를 저장하는 공간이 아니라 데이터를처리하는 임시 공간이다.
OUTPUT이 실행되면 PDV에 있는 값이 데이터셋에 저장되며, 다음 행을 위해 초기화된다.
(4) 자동 OUTPUT 및 RETURN 동작
SAS는 기본적으로 한 번의 반복이 끝날 때마다 자동으로 OUTPUT을 수행하여 PDV 내용을 데이터셋에 저장하고, RETURN을 실행하여 다음 행을 처리한다.
하지만 OUTPUT 문을 명시적으로 사용하여 특정 시점에 데이터를 저장할 수도 있다.
4. 결론
✅ PDV(Program Data Vector)는 SAS에서 데이터셋을 생성할 때 각 행(row)을 임시로 저장하고 처리하는 메모리 공간이다. ✅ SAS의 데이터 스텝이 실행될 때 한 행씩 PDV에 로드되고, 변수를 처리한 후 OUTPUT을 통해 데이터셋에 저장된다. ✅ PDV는 데이터의 오류를 확인할 수 있다. ✅ 자동 초기화, 변수 순서 유지, 자동 OUTPUT 등의 특징을 이해하면 SAS의 데이터 처리 흐름을 더욱 효과적으로 활용할 수 있다.
댓글