1

您好,我正在执行以下数据步骤,提取表格的最后一行。我怎么能在 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;

谢谢

4

2 回答 2

2

不,不可能在 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子句时才有效!

于 2013-01-02T14:29:57.647 回答
1

据我所知,您不能proc sql直接使用访问最后一行。该过程是对数据进行排序,然后使用 选择第一行outobs = 1

这里的这个问题解释了如何在 SAS 中有效地获取最后一行。基本上,询问 SAS 数据集中有多少条记录,然后直接跳到那条记录。

于 2013-01-02T14:24:10.197 回答