这个问题是我在这里的另一个问题的后续问题SAS: Data step view -> error: by variable not sorted properly;我正在打开一个新问题,因为所需的解决方案略有不同:当我循环浏览几个输入文件时,其中一个原始文件没有正确排序,我想知道如何让我的程序跳过该特定输入文件并继续?
引用:
我正在使用宏来根据名称循环文件并提取数据,这些数据适用于大多数情况,但我不时会遇到
public Result parseNode(SndNode node){
try {
...
... // attempt to parsed node
} catch (ParseException e) {
throw new ParseException;
}
}
其中CQM_20141113是我从中提取数据的文件。事实上,我的宏循环遍历ERROR: BY variables are not properly sorted on data set CQ.CQM_20141113.
,它一直运行到20141113。由于这个单一的失败,因此不会创建文件。
我正在使用数据步骤视图来"初始化"数据然后在另一个步骤中调用数据步骤视图(代码示例缩短了where条件):
CQ.CQM_2014:
当我通过日志文件看到错误并再次运行该文件时,它可以工作(有时我需要一些试验)。
我在想一个proc排序,但是在使用数据步骤视图时如何做到这一点? 请注意cqm文件非常大(这也可能是问题的根源)。 结束报价:
编辑:我尝试了你的代码(并在数据步骤视图中删除了by语句),但是我收到了这个错误:
%let taq_ds = cq.cqm_2014:;
data _v_&tables / view=_v_&tables;
set &taq_ds;
by sym_root date time_m; *<= added by statement
format sym_root date time_m;
where sym_root = &stock;
run;
data xtemp2_&stockfiname (keep = sym_root year date iprice);
retain sym_root year date iprice;
set _v_&tables;
by sym_root date time_m;
/* some conditions */
run;
答案 0 :(得分:3)
您是否需要在视图创建中使用by
语句?
如果没有,则从视图中排序为临时数据集:
proc sort data=_v_&tables out=__temp;
by sym_root date time_m;
run;
data xtemp2_&stockfiname (keep = sym_root year date iprice);
retain sym_root year date iprice;
set __temp;
by sym_root date time_m;
/* some conditions */
run;
另一种选择是在PROC SQL
中添加排序顺序创建视图:
proc sql noprint;
create view _v_&tables as
select <whatever>
from &taq_ds
where <clause>
order by sym_root, date, time_m;
quit;