2013-10-26 9 views
7

मैं एसएएस के लिए बहुत नया हूं।एसएएस तालिका में अवलोकनों की संख्या को कैसे गिनें?

ID  score 
------------------- 
    01   1 
    02   3 
    03   4 
    04   2 

वहाँ इस तालिका में टिप्पणियों की संख्या को बचाने के लिए केवल PROC सॉर्ट और आंकड़े कदम का उपयोग कर कोई तरीका है: अब, मैं निम्नलिखित के रूप में एक SAS डेटा तालिका है? मैं लॉग विंडो में मान रखना चाहता हूं, जो एसएएस लॉग स्क्रिप्ट में "होल्ड एन = 4" जैसा है।

मेरे गैर-व्यावसायिक विवरण के लिए खेद है। अग्रिम में धन्यवाद।

+0

आप खुद को सॉर्ट सॉर्ट और डेटा चरणों तक सीमित क्यों करना चाहते हैं? – mvherweg

उत्तर

2

सेट स्टेटमेंट में nobs = का उपयोग करें।

data _null_; 
set xyz nobs=nobs; 
put "HOLD N=" nobs ; 
stop; 
run; 
8

एक नया एसएएस उपयोगकर्ता के रूप में, NOBS विकल्प आप सभी की जरूरत हो सकती है। हालांकि, जैसे-जैसे आपके कोडिंग कौशल में वृद्धि होती है, आप खुद को ऐसे स्थितियों में पा सकते हैं जहां उचित नहीं है। NOBSपर विकल्प SET कथन सभी मामलों में काम नहीं कर सकता है। लौटाया गया मूल्य डेटा सेट में भौतिक अवलोकनों की संख्या होगी, जिसमें किसी भी अवलोकन भी शामिल हो सकता है जो जगह में हटा दिया गया हो। यह कुछ विचारों के साथ भी काम नहीं कर सकता है (विशेष रूप से बाहरी डेटाबेस से जुड़े विचार)।

डेटा सेट या व्यू में अवांछित अवलोकनों की संख्या को खोजने का "सबसे सुरक्षित" तरीका PROC SQL का उपयोग करना है और वास्तव में उन्हें गिनती चर में डालकर, उन्हें गिनना है। उदाहरण के लिए, मान लीजिए आप नाम के एक डेटा वस्तु है है:

proc sql noprint; 
    select count(*) into : nobs 
    from WORK.HAVE; 
quit; 
%put 'Obs in data set:' &nobs; 

नोट इस काम करता है अगर एक डेटा सेट या एक दृश्य है।

:

वैकल्पिक रूप से, अगर आप सिर्फ एक डेटा सेट पर आपत्ति है, तो आप एसएएस तालिकाएं शब्दकोश दृश्य NLOBS विशेषता है, जो "तार्किक" टिप्पणियों की संख्या (यानी किसी भी नष्ट कर दिया पंक्तियों के लिए खातों के लिए) है वापस जाने के लिए उपयोग कर सकते हैं

proc sql noprint; 
    select nlobs into : nobs 
    from dictionary.tables 
    where libname='WORK' 
    and memname='HAVE'; 
quit; 
%put 'Obs in data set:' &nobs; 

यदि आपका एसएएस डेटा सेट बहुत बड़ा है तो यह निश्चित रूप से अधिक कुशल होगा। मैंने अक्सर सोचा है कि क्यों एसएएस एनएलओबीएस मूल्य एसईटी कथन पर एक विकल्प के रूप में उपलब्ध नहीं है, लेकिन मुझे यकीन है कि ऐसे कारण हैं।

प्रोसी एसक्यूएल, विचार, मैक्रो वैरिएबल, और जगह में हटाए गए अवलोकन आपके लिए बिल्कुल नए हो सकते हैं, लेकिन जैसे ही आप अपने एसएएस सीखने के साथ आगे बढ़ते हैं, आप उनका उपयोग शुरू करने के लिए बाध्य हैं।

-2

डेटा शून्य;

सेट sashelp.vtable;

जहां libname = "WORK" और memname = "DS1";

कॉल symput ("count_obs", nlobs);

रन;

% ds1 में obs डाल दिया गया है: & count_obs;

+0

बहुत सारी टेबल हैं तो धीमे हो जाएंगे – xiaodai

संबंधित मुद्दे