【问题标题】:SAS: Reading datalines and data from a dataset together in DATA stepSAS:在数据步骤中一起从数据集中读取数据线和数据
【发布时间】:2015-06-15 22:55:24
【问题描述】:

我们将在每天上午 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 标志,并让代码与永久数据集和上面的数据线匹配。我可以从上述数据步骤本身以及数据线中读取永久数据集吗?我们在电子邮件中收到的这种代码顺序每天都会发生变化。所以我们只想从数据线上读取代码。

数组值: 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章 4 960 阿杰。 . .

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

【问题讨论】:

  • 简单地说,我的问题是,我可以从同一个 DATA 步中读取永久数据集和数据线吗?
  • 是的,您可以从同一数据步骤中读取永久数据集和数据线。
  • @reeza,你能提供任何样品吗?
  • 您没有显示 set 声明,所以我不确定您总体上要做什么。但是要在 cmets 中回答您的问题,是的,您可以。我不确定这会不会做你想做的事。
  • 如果您提供一个您希望最终数据集看起来如何的示例,人们将能够建议如何最好地构建它。

标签: sas


【解决方案1】:

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

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

【讨论】:

  • 谢谢瑞萨。在这里它正在工作。在我的要求中,我必须读取数据集以检索在数据行中传递的相应订单,以获取相应的时间范围和高知名度的客户代码。在这种情况下,我无法读取数据集,当我放置 set 语句时,profile_orders 将变为空。更新了我的问题中的代码。我想要的输出是检索如下计数:910 A1 有 11 个订单,这是通过从数据线的第一行读取第 5 个元素 --> 5 8 3 7 11
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-01
  • 2015-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多