簡體   English   中英

如何在不使用 sort 或 First 的情況下從 SAS 中的數據集中獲取最后兩個觀察值。 和最后。 或做循環

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM