SAS:在DATA步骤

时间:2015-06-15 22:55:24

标签: sas

我们将在当天的高峰时段上午9点至上午10点获得一系列高调的订购代码。所有订单都被捕获到永久数据集ORDERS中。现在,我们必须仅为高调订单将优先级顺序设置为1。

我正在使用以下代码捕获一小时的5个间隔以及相应的高调代码:

data orders; 
input time PROF_CODE $ ;
datalines;
900 A1 
936 R2 
948 BQ 
960 AJ
900 CT 
936 A1 
936 R2 
924 BQ 
900 AJ
912 CT  
;

data profile_orders; 
set orders;
array profile_code {900:960, 5} _temporary_; 
array HPC_CODE{5} $ _temporary_ ('AJ', 'BQ', 'CT', 'A1', 'R2');

do i = 900 to 960 by 12 ;
    do j = 1 to 5 by 1 ;
        if _n_ = 1 then
        input profile_code(i,j) @;
    end;
end;
drop i j; 

datalines;
5 8 3 7 11 
6 44 54 88 1
4 7 3 77 9
3 4 3 4 9 
91 3 8 0 12 
;

我有一个包含订单时间,代码和订单详情的数据集。我必须仅为在此期间发出的订单设置proriry标志,并使代码与永久数据集和上述数据表匹配。我可以从上面的数据步骤中读取永久数据集以及数据线吗?这个代码顺序每天都会在电子邮件中发生变化。所以我们只想从datalines读取代码。

数组值: profile_code - > (900,1):5,(900,2):8,(900,3):3,(900,4):7,(900,5):11          (912,1):6,(912,2):44,(912,3):54,(912,4):88,(912,5):1          (924,1):4,(924,2):7,(924,3):3,(924,4):77,(924,5):9          (936,1):3,(936,2):4,(936,3):3,(936,4):4,(936,5):9          (948,1):91,(948,2):3,(948,3):8,(948,4):0,(948,5):12

预期产出:

910 A1 7 936 R2 9 948 BQ 4 960 AJ。 。

(我已将时间间隔四舍五入到输入数据集顺序中最接近的第12分钟间隔)。

1 个答案:

答案 0 :(得分:1)

这将读取日期行和数据集,但输出可能不是您想要的。

data want;
set sashelp.class;
input name2 $ age2;
cards;
Sigma 13
Beta 14
Alpha 18
;
run;