2017-05-05 16 views
1

여러 배송에 대한 배송 데이터의 지난 12 개월 동안 통계를 계산하는 작업에 대해 매월 업데이트하는 코드가 있습니다 즉, 비행기, 기차, 트럭, 선박 등의 그룹을 의미합니다.SAS 12 개월 전 매크로 값을 기준으로 재 인덱싱 된 월 값 열 만들기

간단히 말해서, 나는 약 10 만 행에 걸친 출하 일 이름의 열을 가지고 있으며 그 달을 지정하는 값 1 - 12와 출하 횟수라는 또 다른 열을 지정합니다. 해당 날짜의 배송 건수는 다음과 같습니다.

data shipments 
    input Shipment_Month Shipment Count; 
datalines; 
1 2 
2 3 
3 5 
4 6 
5 7 
6 9 
7 10 
8 11 
9 12 
10 11 
11 8 
12 7 
1 . 
2 . 
3 . 
4 . 
. . 
. . 
. . 
. . 
. . 

코드를 실행할 때마다 지난 달의 끝과 12 개월 전 (12 개월에 걸친) 한 달의 시작일을 알려주는 두 개의 매크로 변수. 내가 뭘하고 싶은데요 Shipment_reindex라는 열을 만듭니다. Shipment_Month 열에서 12 개월 전 즉 12 개월 만에 다시 색인화 된 값 1-12로 채워집니다. & Back_12_Months = 5 rei-indexed 1 = 1, 6 = 2, 7 = 3, 8 = 4, 9 = 5, 10 = 6, 11 = 7, 12 = 8, 1 = 9, 2 = 10, 3 = 11, 4 = 12이다.

if Shipment_Month=5 then shipment_Reindex=1; 
else if Shipment=6 then Shipment_Reindex=2 
.... 

그러나이 열을 업데이트하는 나는 끊임없이를 변경할 필요 나 대신 코드를 실행할 때 자동 싶습니다

Shipment_Month Shipment_Count Shipment_reindex 
    1    2     9 
    2    3     10 
    3    5     11 
    4    6     12    
    5    7     1 
    6    9     2 
    7    10     3 
    8    11     4 
    9    12     5 
    10    11     6 
    11    8     7 
    12    7     8 
    1    .     9 
    2    .     10 
    3    .     11 
    4    .     12 
    5    .     1 
    .    . 

내가 어려운 방법을 생각할 수 그것을 할 값. 나는 배열을 어지럽 혔지만 아무데도 빨리 가지 않고있다.

제발 도와주세요!

감사합니다, - 키스

+0

미안하지만, 팀, 내 나쁜 ... 나는 실수 로이에 MySQL 태그를 첨부했습니다. SAS 9.4를 사용하고 있습니다. 그래도 감사합니다!!! – Keith

답변

0

이 문제는 간단한 대수 기준에 의해 해결 될 수 있습니다. 이 단계에서와 같이 월 시작하려는 당신은에서 값을 변경할 수 있습니다 call symputx("Back_12_Months",5)

data shipments; 
input Shipment_Month Shipment_Count; 
datalines; 
1 2 
2 3 
3 5 
4 6 
5 7 
6 9 
7 10 
8 11 
9 12 
10 11 
11 8 
12 7 
1 . 
2 . 
3 . 
4 . 
5 . 
6 . 
7 . 
; 
run; 

data shipments1; 
set shipments; 
call symputx("Back_12_Months",5); 
if Shipment_Month >= &Back_12_Months. 
    then Shipment_reindex = Shipment_Month+1-&Back_12_Months. ; 
else Shipment_reindex = Shipment_Month+13-&Back_12_Months.; 
run; 

내 출력 :

Shipment_Month | Shipment_Count | Shipment_reindex 
1    | 2    | 9 
2    | 3    | 10 
3    | 5    | 11 
4    | 6    | 12 
5    | 7    | 1 
6    | 9    | 2 
7    | 10    | 3 
8    | 11    | 4 
9    | 12    | 5 
10    | 11    | 6 
11    | 8    | 7 
12    | 7    | 8 
1    | .    | 9 
2    | .    | 10 
3    | .    | 11 
4    | .    | 12 
5    | .    | 1 
6    | .    | 2 
7    | .    | 3 

날 어떤 쿼리의 경우에 알려주십시오.

+0

당신은 아름다운 사람, 아리마입니다. 고맙습니다!!! – Keith

+0

감사합니다. 도와 드리겠습니다 :) –

+0

또한 답변을 수락하고 자외선으로 대답하면 도움이됩니다. –