상세 컨텐츠

본문 제목

[ SAS ] - DATA를 입력하고, sorting하는 프로그램 작성

Language/SAS

by bing_su 2023. 3. 20. 17:29

본문

반응형
SMALL

첫 번째 실습으로 진행한 "데이터 정렬(sorting)" 프로그램을 작성해 봤다.

학생 정보와 성적을 입력하여 성적을 기준으로 하향 정렬하는 프로그램이다.

 

프로그램 작성을 위해 필요한 개념을 짚고 넘어가자.

[ 테이블을 직접 생성하는 방법 ]

데이터는 크게 숫자 변수와 문자 변수로 나눈다. SAS는 숫자와 문자를 분명히 구분한다. 예를 들어 사칙연산(+, -, *, /)은 숫자 변수에만 적용되고 문자 변수에는 적용이 되지 않는다. 사칙연산이 문자 변수에 적용되면 오류가 발생한다.

- 명령어 정리

DATA xxx;  // 테이블 xxx를 생성함
INPUT yyy $ zzz;  // 문자 변수 yyy와 숫자 변수 zzz를 생성함.
// 숫자 변수는 변수명만 입력. 문자 변수는 변수명 뒤에 한 칸 띄우고 $를 붙임
CARDS; xx 1  // xx와 1을 각각의 변수에 입력함 (CARDS는 DATALINES로 바꿀 수 있음)
;  // DATA 입력이 끝나면 그 다음줄에 세미콜론(;) 입력해야 함.
RUN;  // SAS 명령어 종료

[ PROC SORT(순서대로 정렬하기) ]

테이블 데이터를 순서대로 정렬한다.

- 명령어 정리

PROC SORT DATA=xxx OUT=yyy;
// xxx라는 DATA를 불러와 SORT Procedure를 시행한 후, 결과값을 yyy라는 table로 만든다.
BY zzz;  // 변수 zzz를 오름차순으로 정렬한다.(기본옵션이 오름차순으로 설정되어 있음)
BY DESCENDING zzz;  // 변수 zzz를 내림차순으로 정렬한다.

PROC SORT를 이용하여 오름차순 정렬할 때, 변수 xxx가 숫자 변수이면 작은 수부터 차례대로 오름차순으로 정렬된다. 문자 변수이면 ASCII 코드 값에 따라 오름차순으로 정렬된다. 한글이면 가나다순으로, 영어면 알파벳순으로 정렬된다. 한글과 영어가 섞여 있을 경우에는 영어가 먼저 나오고 다음으로 한글이 나온다.

※ 참고: 오름차순과 내림차순

BY 명령어 이후 변수 앞에 DESCENDING 명령어를 넣으면 내림차순으로 정렬된다. BY 이후 변수 앞에 ASCENDING 명령어는 넣을 수 없다. ASCENDING은 기본옵션으로 설정되어 있어서 입력하지 않아도 된다. 즉, BY와 변수 사이에 명령어를 입력하지 않을 경우에는 변수가 자동으로 오름차순으로 설정되어 정렬된다.

[ 데이터를 입력하고, sorting 하는 프로그램 실습 ]

위의 개념들을 이용하여 데이터를 입력하여 sorting하는 프로그램을 작성했다.

DATA class;
	INPUT name $ gender $ dept $ age score;
    CARDS;
    	H.Kim M Stat 21 85
        K.An F Econ 20 90
        K.Lee F Math 19 72
        J.Park F Econ 19 90
        S.Choi M Math 22 95
        ;
RUN;

PROC SORT DATA=class;
	BY DESCENDING score DESCENDING age;
RUN;

데이터를 입력하여 score을 기준으로 내림차순 정렬을 하는 프로그램이다. score이 같을 경우에는 age를 내림차순으로 정렬하는 프로그램이다. 이 프로그램을 실행하면 아래와 같은 결과를 얻을 수 있다.

프로그램 실행 화면

위 테이블을 보면 데이터가 score 값을 기준으로 내림차순 정렬된 것을 볼 수 있고, score 값이 같을 경우에는 age 값을 기준으로 내림차순 정렬된 것을 볼 수 있다. 

반응형
LIST

관련글 더보기

댓글 영역