您好,我正在执行以下数据步骤,提取表格的最后一行。我怎么能在 a 中做同样的事情proc sql
,如果我可以直接访问最后一行,我希望它会快得多?
data refTable;
set vhd(keep= v69c1ec v69dhec v69nbms fixing where=(fixing = 'continu')) end=eof;
if eof then output;
by v69dhec v69nbms;
run;
谢谢
不,不可能在 SQL 中重现此行为。SQL 中没有自然意义上的“行顺序”。请注意,您不是在访问“表格的最后一行”;在应用子句后,您将获得最后一个符合条件的行。WHERE
如果你真的得到最后一行,一个更快的 SAS 技术是使用POINT=
andNOBS=
选项,如下所示:
data refTable;
get_me = nobs;
set vhd(keep=v69c1ec v69dhec v69nbms fixing) point=get_me nobs=nobs;
output;
stop;
run;
请注意,这仅在您不包含WHERE
子句时才有效!
据我所知,您不能proc sql
直接使用访问最后一行。该过程是对数据进行排序,然后使用 选择第一行outobs = 1
。
这里的这个问题解释了如何在 SAS 中有效地获取最后一行。基本上,询问 SAS 数据集中有多少条记录,然后直接跳到那条记录。