SAS 未分类等效项

SAS NOTSORTED Equivalent

我使用以下代码来分析数据:

 set taq.cq_&yyyymmdd:;
 by symbol date time NOTSORTED ex;

我正在 运行以天为单位编写代码的数据集数以千计。当 &yyyymmdd 只指定一个数据集(一天。例如,20130102)时,它有效。但是,当我尝试 运行 它用于多个数据集(例如,201301:)时,SAS returns 出现以下错误:

BY NOTSORTED/NOBYSORTED cannot be used with SET statement when
more than one data set is specified. 

如果我不能在这里使用 NOTSORTED,我可以使用什么等效语句?

我对关键字NOTSORTED的理解是当数据还没有排序的时候使用它。因此,我需要先对它进行排序吗?怎么做?

我也对 NOTSORTED 引用的变量数量感到困惑。它只对 "time" 有影响,还是对 "symbol, data, time" 有影响?

非常感谢!

更新#2:

set 语句之后的其余过程是:(伪代码,因为我没有 post 原始代码的权限)

Data _quotes;

SET STATEMENT HERE 

Change the name of a variable in the dataset (Variable name is EXN). 

last.EXN in a if statement. If the condition is satisfied, label EXN. 

Drop some variables. 

Run; 

DATA NEWDATASET (sortedby= SYMBOL DATE TIME index=(SYMBOL)
              label="WRDS-TAQ NBBO Data");

SET _quotes;
by symbol date time;

.... 

Run;

NOTSORTED 意味着 SAS 可以假定数据中的排序顺序是正确的,因此它可能没有明确经过 PROC SORT,但它是按 BY 语句中列出的逻辑顺序排列的。

BY语句中的所有变量都包含在NOTSORTED选项中。鉴于我怀疑您完全不了解 BY 组处理。 它通常使用起来有点危险,尤其是如果你不了解 BY 组处理。如果您的数据在同一组中但不相邻,它将无法正常工作并且不会产生错误。老实说,正确的解决方法取决于您的流程。

我建议查看有关 BY 组处理的文档。它非常深入并且有很多示例来说明不同类型的计算。

http://support.sas.com/documentation/cdl/en/lrcon/69852/HTML/default/viewer.htm#n138da4gme3zb7n1nifpfhqv7clq.htm

NOTSORTED 通常在示例帖子中使用,以避免排序或使用难以通过其他方式实现的自定义排序。显式排序将消除此问题,但您可能还误解了当您使用 SET 语句和 BY 语句时 SAS 处理数据的方式。我相信这称为交错。

http://support.sas.com/documentation/cdl/en/lrcon/69852/HTML/default/viewer.htm#n1tgk0uanvisvon1r26lc036k0w7.htm

我怀疑 NOTSORTED 关键字用于查找在相同符号、日期、时间内具有相同 EX 变量值的观察组。如果你只需要找到第一个那么你可以使用 LAG() 函数来计算 FIRST.EX 标志。

data want;
  set taq.cq_&yyyymmdd:;
  by symbol date time;
  first_ex = first.time or ex ne lag(ex);

否则,您可能希望将流程转换为数据步骤视图,然后将视图设置在一起。

data work.view_cq_20130102 / view=work.view_cq_20130102;
  set taq.cq_20130102;
  by symbol date time ex NOTSORTED;
  ...
run;
...
data want ;
  set work.view_cq_201301: ;
  by symbol date time;
...