[英]How to get last two observations from a dataset in SAS without using sort or First. and Last. or Do loop
下面的代碼將解決從數據集中獲取最后 2 個觀察值的問題,而無需使用循環、第一個和最后一個點概念或排序。
data a;
set sashelp.cars nobs=_nobs_;/*create the temporary variable to store total no of obs*/
if _N_ ge _nobs_-1;/*Now compare the automatic variable _N_ to _nobs_*/
run;
不確定這里有沒有問題。
您還可以在SET
語句中使用POINT=
選項。 您必須明確結束數據步驟,因為大多數數據步驟在讀取輸入數據的末尾時結束,而此步驟不能這樣做。
data want;
do p=max(1,nobs-1) to nobs;
set have point=p nobs=nobs;
output;
end;
stop;
run;
DATA 步是帶有自動索引變量_N_
的隱式循環。 您可以利用這一事實在沒有顯式DO
循環的情況下隱式輸出行。 根據@Tom,使用了point=
選項,因此無需讀取整個數據集即可到達最后兩行。
例子:
data want;
if _N_ > min(2,_Z_) then stop;
_P_ = _Z_ - min(2,_Z_) + _N_;
set sashelp.class point=_P_ nobs=_Z_;
run;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.