【发布时间】:2017-05-05 01:12:50
【问题描述】:
我有一些代码,我每个月都会更新一些代码,用于计算过去 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 列中的重新索引值 1-12 填充,宏的值给了我 12 个月的时间,即 month(&Back_12_Months) = 5 rei-indexed to 1 依此类推,即 5=1, 6=2, 7=3, 8=4, 9=5, 10=6, 11=7, 12=8, 1=9, 2=10, 3=11, 4 =12。
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
. .
我能想到很难做到的方法:
if Shipment_Month=5 then shipment_Reindex=1;
else if Shipment=6 then Shipment_Reindex=2
....
但我希望它在我运行代码时自动更新列,而不是我不断地更改值。我一直在搞乱数组,但进展不快。
请帮帮我!
谢谢, - 基思
【问题讨论】:
-
对不起,蒂姆,我的错……我不小心在上面附加了 mysql 标签。我正在使用 SAS 9.4。不过还是谢谢!!!
标签: indexing macros sas reindex