SAS中last.date未达预期:未仅保留最后日期行却保留所有行
问题分析与解决
你的代码逻辑是提取每个date分组的最后一行,但如果原始数据中每个date值仅对应一条记录,那么每一行都会被判定为last.date,最终就会输出所有行。
如果你的需求是提取整个数据集的最后一行,或者提取最大date对应的目标行,可以用以下两种方法:
方法1:直接获取数据集最后一行(无需排序)
利用SAS的nobs参数获取总行数,通过行号_n_定位最后一行:
data &data._summary; set &data. nobs=total_rows; if _n_ = total_rows; run;
方法2:按date排序后提取最大date的目标行
如果你的目标是获取最大date对应的记录,先按date降序排序,再通过分组判断提取:
proc sort data=&data.; by descending date; run; data &data._summary; set &data.; by descending date; if first.date; /* 仅取最大date的第一行;若要所有同date记录,删除该判断 */ run;
内容的提问来源于stack exchange,提问作者N0DuckingWay
相关产品推荐
相关产品推荐

