[SAS 프로그래밍] RETAIN 활용하기 2
안녕하세요^^
오늘은 지난 시간에 이어 retain 함수를 활용하여 전체 누적 계산을 하는 방법과, 변수의 순서를 지정하는 내용에 대해 알아보겠습니다.
1. 초기값 지정
2. 변수의 이전 값과 현재 값을 비교하는 연산 가능 (중복값 제거 가능)
3. 변수 순서 지정
첫 번째로, 원하는 변수값의 누적 합을 구하는 내용을 예제를 통해 설명하겠습니다.
예제로 사용된 데이터는 [SASHELP]-[ORSALES]입니다.
우선 ORSALES에서 사용할 변수들의 2002년도 자료만 추출하여 retain_1이라는 데이터셋을 만들었습니다.
1) 전체 누적 합
Retain문을 사용하여 누적한 값을 저장할 새로운 변수와 초기값을 설정해 줍니다.
다음으로
cumulative_quantity + quantity
와 같이 쓰게 되면, 첫 번째 관측값에서는 cumulative_quantity에 지정한 초기값 0과 quantity의 값이 더해져서 cumulative_quantity에 저장되게 되고
두 번째 관측값부터는 바로 위에서 계산된 cumulative_quantity값에 quantity을 누적하여 더한 후 cumulative_quantity에 저장합니다.
2) 그룹별 누적 횟수
만약, 그룹 별로 누적합을 구하고 싶을 땐
미리 PROC SORT 프로시저를 사용하여 그룹변수로 정렬을 해 준 후
DATA 프로시저에서도 BY문을 사용하여 그룹변수를 지정해주어야 합니다.
IF first. product_category THEN total_quantity=0
quantity_num+1;
그 이후, 위와 같이 조건문을 써주게 되면 각 product_category 그룹 별로 total_quantity의 초기값을 0으로 지정하여 그룹별 합을 구할 수 있게 됩니다.
3) 누적합으로 구한 quantity 와 profit 값으로 총 누적 평균을 구해보았습니다.
결과는 아래와 같이 나오게 됩니다.
두 번째로 retain함수를 사용하여 변수 순서를 지정하는 방법을 알아보겠습니다.
예제로 사용된 데이터는 [SASHELP]-[CLASS] 입니다.
Class 데이터에서 10개의 관측치만 가져왔을 때의 기존 변수 순서는 name – sex – age – height – weight 임을 알 수 있습니다.
retain문을 사용하고 원하는 변수의 순서대로 변수명을 써 준다음, 불러올 데이터 셋을 지정해 주면 새로운 데이터 셋 retain_reorder에는 지정한 순서대로 name – age – sex – weight – height 순으로 출력이 되는 것을 알 수 있습니다.
한 가지 주의할 점은, retain문을 먼저 쓰고 set문을 써서 데이터를 불러와야 하는 부분입니다.
이상으로 retain 함수를 활용하여 누적 계산과 변수 순서를 지정하는 방법에 대해 알아보았습니다.
감사합니다.^^
Save $250 on SAS Innovate and get a free advance copy of the new SAS For Dummies book! Use the code "SASforDummies" to register. Don't miss out, May 6-9, in Orlando, Florida.