[SAS 프로그래밍] 원하는 순서대로 데이터 정렬하기
안녕하세요^^
이번 시간에는 데이터를 사용자가 원하는 순서대로 정렬하는 방법에 대해 알아보겠습니다.
보통 사용하는 proc sort방법은
오름차순(a, b, c, … / 1, 2, 3…)으로 정렬하거나 혹은 반대로 내림차순(z, y, x, … / 10, 9, 8, ...)으로 정렬 할 수 있습니다.
그러나 이런 일반적인 순서가 아닌
사용자가 원하는 값의 순서대로 정렬을 하고 싶을 때 사용할 수 있는 방법에 대해 알아보겠습니다.
▶ 예제데이터
먼저 예제 데이터로 사용할 데이터 셋은 아래와 같습니다.
▷ 목적
• 위의 데이터를 계절 순서대로 나타내고 싶을 때,
변수 season을 기준으로 일반적인 정렬 방법(proc sort)을 사용하는 경우에는 fall, spring, summer, winter의 순서대로 정렬이 됩니다.
• 하지만 계절 순서인 spring, summer, fall, winter의 순서대로 데이터를 나타내보고자 할 때 사용할 수 있는 방법들에 대해 알아보겠습니다.
▶ DATA STEP 사용하기
▷ coding
• If 문을 활용하여 원하는 출력 순서대로 번호를 붙여 새로운 변수(num)를 생성합니다.
• 그리고 proc sort를 사용하여 새로 만든 변수 num을 기준으로 정렬을 합니다.
▷ 결과
• 정렬된 데이터를 proc print로 출력 할 경우 var문을 사용하여 num 변수를 제외하고 보고싶은 변수들만 출력하여 확인할 수 있습니다.
• 만약에 정렬 이후에 num 변수가 필요 없는 경우에는 변수 num을 drop하고 기존의 변수들만 사용할 수도 있습니다.
▶ PROC SQL 사용하기 : order by case
Data step을 활용할 때와 마찬가지로
새로운 변수를 생성하고 출력하길 원하는 순서대로 넘버링하여 새로운 변수를 기준으로 정렬하는 방법입니다.
▷ coding
• 먼저 괄호 안의 내용이 선행됩니다.
• 데이터 chores로부터 project, hours, season을 선택합니다.
• 다음으로, CASE 를 사용하여 seaseon 별로 spring은 1, summer는 2, fall은 3, winter은 4와 같이 값을 지정하여 새로운 변수 Sorter를 생성합니다.
• order by 문에 Sorter로 지정을 해주게 되면 1, 2, 3, 4 순서대로 정렬이 됩니다.
• 만약, Sorter변수를 내부적으로 정렬하는데만 사용하고 출력 결과물에는 표기하지 않고 싶다면
select 문에 Sorter변수를 제외한 출력하고싶은 변수만 적어주면 Sorter변수가 출력된 결과에서는 보이지 않습니다
이상으로 사용자가 원하는 순서대로 데이터를 정렬하는 방법에 대해 알아보았습니다.
감사합니다. ^^
[출처]
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Early bird rate extended! Save $200 when you sign up by March 31.