2013-03-23 7 views
6

में चर की एक श्रृंखला ड्रॉप करें वर्तमान में मेरे पास 200 चर के साथ एक डेटासेट है। उन चर से, मैंने 100 नए चर बनाए। अब मैं मूल 200 चर ड्रॉप करना चाहता हूं। मैं उसे कैसे कर सकता हूँ?एसएएस

थोड़ा बेहतर होगा, मैं नए डेटासेट में चर 3-200 कैसे छोड़ सकता हूं।

क्षमा करें अगर मैं अपने प्रश्न में अस्पष्ट था लेकिन मूल रूप से मुझे पता चला कि मुझे उपयोग करने की आवश्यकता है -। यदि मेरा पहला चर पहले कहा जाता है और मेरा अंतिम चर अंतिम कहा जाता है, तो मैं सभी चर के साथ (ड्रॉप = पहले - आखिरी) ड्रॉप कर सकता हूं;

सभी प्रतिक्रियाओं के लिए धन्यवाद।

उत्तर

5

अधिकांश एसएएस कार्यों के साथ, कई विकल्प हैं। एक एसएएस डेटा सेट से चर ड्रॉप करने का सबसे आसान और सुरक्षित तरीका प्रोसी एसक्यूएल के साथ है। बस नाम से चर, अल्पविराम से अलग सूची:

proc sql; 
    alter table MYSASDATA 
     drop name, age, address; 
quit; 

PROC SQL के साथ तालिका फेरबदल डेटा जगह में सेट से चर निकाल देता है।

data have; 
    set have(drop=name age address); 
run; 

और फिर भी एक और तरीका एक DROPबयान उपयोग कर रहा है:

एक और तकनीक एक DROPविकल्प का उपयोग कर डेटा सेट बनाना है

data have; 
    set have; 
    drop name age address; 
run; 
+1

, यदि आप कम चर है कि आप * रखने के लिए * से * ड्रॉप * चाहते हैं, और आप इन तकनीकों आप उन्हें स्पष्ट कोड में नाम के लिए है, जहां से एक का उपयोग करना चाहते हैं, तो आप करना चाहते हैं इसके बजाय 'KEEP' का उपयोग करें। – sasfrog

3

विकल्पों में से बहुत सारे - कुछ 'सुरक्षित', कुछ कम सुरक्षित लेकिन कोड के लिए आसान है। आइए कल्पना करें कि आपके पास प्रारंभ करने के लिए चर आईडी, पीएलएनटी, और x1-x200 के साथ एक डेटासेट है।

data have; 
id=0; 
plnt=0; 
array x[200]; 
do _t = 1 to dim(x); 
x[_t]=0; 
end; 
run; 

data want; 
set have; 
*... create new 100 variables ... ; 
*option 1: 
drop x1-x200; *this works when x1-x200 are numerically consecutive; 
*option 2: 
drop x1--x200; *this works when they are physically in order on the dataset - 
       only the first and last matter; 
run; 

* या, इसे इस तरह से करें। यह एसक्यूएल अल्टर टेबल के साथ भी काम करेगा। यह ऐसा करने का सबसे सुरक्षित तरीका है .;

proc sql; 
select name into :droplist separated by ' ' from dictionary.columns 
where libname='WORK' and memname='HAVE' and name not in ('ID','PRNT'); 
quit; 

proc datasets lib=work; 
modify want; 
drop &droplist.; 
quit; 
+0

धन्यवाद, यह बिल्कुल सही था। – sujinge9

+1

मुझे नहीं लगता था कि आप प्रोसी डेटास में चर ड्रॉप कर सकते हैं, यह प्रक्रिया आमतौर पर डेटासेट के वर्णनकर्ता भाग में संशोधन करने के लिए उपयोग की जाती है। एसएएस के बाद के संस्करण में कोई बदलाव आया है? – Longfish

+2

@ किथ आप सही हैं; कोई प्रोसी डेटा का उपयोग कर चर नहीं छोड़ सकता है। एसएएस वाइल्डकार्ड मिलान के लिए – BellevueBob

1

तो चर आप तो वे सब शुरू नाम हैं ड्रॉप करना चाहते हैं के सभी एक ही (जैसे old_var_1, old_var_2, ..., old_var_n), तो आप इस (ड्रॉप विकल्प में पेट पर ध्यान दें) कर सकता है:

data have; 
set have(drop= old_var:); 
run; 
बेशक
+0

+1। इसे पोस्ट करने से मुझे बचाया! – user667489

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