我有一個包含1000個觀測值的數據集。我只想打印出最後的觀察結果。使用以下內容:如何打印SAS數據集的最新觀察結果?
proc print data=apple(firstobs = 1000 obs = 1000);
run;
我可以得到最後的觀察結果。但我必須事先知道我的數據集有1000個觀測值。如果不知道這一點,我該怎麼做?
我有一個包含1000個觀測值的數據集。我只想打印出最後的觀察結果。使用以下內容:如何打印SAS數據集的最新觀察結果?
proc print data=apple(firstobs = 1000 obs = 1000);
run;
我可以得到最後的觀察結果。但我必須事先知道我的數據集有1000個觀測值。如果不知道這一點,我該怎麼做?
有很多方法可以做到這一點。這裏有兩個:
proc sql noprint;
select n(var1) into :nobs
from apple;
quit;
proc print data=apple(firstobs=&nobs); run;
這只是將觀測數量讀入宏變量,然後用它來指定第一個觀測值。 (注意:var1
指的是在您的數據的變量。)
另一種方法是創建一個僅保存最後觀測數據視圖,然後打印:
data tmp/view=tmp;
set apple nobs=nobs;
if _n_=nobs;
run;
proc print data=tmp; run;
有很多方法可以找到觀測次數;下面的宏是一個例子。
%macro nobs (dsn);
%let nobs=0;
%let dsid = %sysfunc(open(&dsn));
%if &dsid %then %let nobs = %sysfunc(attrn(&dsid,nobs));
%let rc = %sysfunc(close(&dsid));
&nobs
%mend nobs;
%let n = %nobs(apple);
proc print data=apple (firstobs=&n obs=&n); run;
我認爲end
選項爲SET
,MERGE
,MODIFY
,或UPDATE
語句是非常有用的。
data x;
do i = 1 to 1000;
output;
end;
run;
data x;
set x end = _end;
end = _end;
proc print data = x;
where end;
run;
有兩個簡單的解決方案:
解決方案1:
data result;
set apple end=end;
if end then output;
run;
proc print data=result;
run;
解決方案2:
data result;
set apple nobs=nobs;
if _N_=nobs then output;
run;
proc print data=result;
run;
特雷弗嗨,這個問題:「如何讓意見的數量一個數據集「已經在這裏回答: http://stackoverflow.com/questions/ 5658994 /如何檢測是否有數據集有沒有意見在sas –
一個正在研究SAS基礎測試,並在這裏結束的人 - 不要爲他們的技巧 - 沒有LASTOBS選項這樣的東西! :) –