2011-10-31 3 views
5

मेरे पास 1000 अवलोकनों वाला डेटा सेट है। मैं केवल अंतिम अवलोकन को मुद्रित करना चाहता हूं। निम्नलिखित का उपयोग करना:आप एसएएस डेटा सेट के अंतिम अवलोकन को कैसे प्रिंट करते हैं?

proc print data=apple(firstobs = 1000 obs = 1000); 
run; 

मुझे अंतिम अवलोकन मिल सकता है। लेकिन मुझे पहले से ही पता होना है कि मेरे डेटा सेट में 1000 अवलोकन हैं। यह जानने के बिना मैं यह कैसे कर सकता हूं?

+2

हाय ट्रेवर, सवाल "कैसे में टिप्पणियों की संख्या प्राप्त करने के लिए एक डेटासेट "का उत्तर यहां दिया गया है: http://stackoverflow.com/questions/ 5658994/कैसे-पता-पहचान-चाहे-कोई-अवलोकन-इन-एसएएस –

+0

एसएएस बेस टेस्ट के लिए अध्ययन करने वाले किसी भी व्यक्ति के लिए एक सिर है और यहां समाप्त हुआ - इसके लिए मत गिरना उनकी चाल - LASTOBS विकल्प जैसी कोई चीज़ नहीं है! :) –

उत्तर

7

आप इसे करने के कई तरीके हैं। यहां दो हैं:

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; 
1

कई तरीके खोजने के लिए कर रहे हैं अवलोकनों की संख्या; निम्नलिखित मैक्रो एक उदाहरण है।

%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; 
3

मुझे लगता है कि SET, MERGE, MODIFY, या UPDATE बयान के लिए end विकल्प बहुत उपयोगी है।

समाधान 1:

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; 
0

दो सरल समाधान कर रहे हैं

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; 
संबंधित मुद्दे