Thursday, 15 March 2012

How to efficently create arrays with runs of equal elements in SAS -


केस एक

नमूना आउटपुट:

  `1,1,1,1,2,2,2,2 ...... 9, 9, 9, 0, 0, 0,0 ' 
< P> एक और सामान्य मामला होगा:

सरणी n1 तत्वों से मूल्यवान x1 के साथ शुरू होती है, उसके बाद उसके बाद n2 नमूना आउटपुट में, n1 = n2 = n3 = .. = 4 , x1 = 1, X2 = 2 ...

लेकिन मैं इसे if-else स्टेटमेंट का उपयोग करते हुए तत्व की स्थिति के आधार पर इसे बनाना नहीं चाहता।

यहां मैंने जो किया है:

 % letnd = 80; डेटा _ डी (ड्रॉप = आई); सरणी एपी {& amp; nd}; क्या मैं = 1 से & amp; एन डी; अगर मैं 4 तो एक [i] = 1; अन्य ....; समाप्त; 'अन्य कोड' चलाने;  

केस दो

क्या होगा अगर सरणी में क्रम कोई फर्क नहीं पड़ता जब तक इसमें सभी तत्व जो मुझे चाहिए (n1 X1, n2 x2 ...)? इस परिदृश्य में, क्या सरणी का निर्माण करना आसान है?

बशर्ते आप पहले से जानते हैं कि ऊपरी कितने तत्वों के लिए बाध्य है जिन्हें आप बनाना चाहते हैं, आप ऐसा कर सकते हैं सरणी विवरण में - जैसे

  डेटा _null_; सरणी टी {10} (1 * 1 2 * 2 3 * 3 4 * 4); टी {*}; चलाने;  

आउटपुट:

  1 2 2 3 3 3 4 4 4 4  

एन.बी. इस प्रकार की असाइनमेंट आपके सरणी चर को बरकरार रखेगी।

तत्वों के रन बनाते समय आप नेस्ट ब्रैकेट भी कर सकते हैं, उदा।,

  डेटा _null_; सरणी टी {10} (2 * (1 2 3 4 5)); टी {*}; चलाने;  

आउटपुट:

  1 2 3 4 5 1 2 3 4 5  

हालांकि, * संकेत को कोष्ठक द्वारा पृथक होना चाहिए, जैसे

  डेटा _null_; सरणी टी {10} (2 * (1 2) 2 * (3 * 3)); टी {*}; चलाने;  

आउटपुट:

  1 2 1 2 3 3 3 3 3 3  

No comments:

Post a Comment