R का उपयोग करके अधिकतम मूल्य वाले पंक्ति सूचकांक को खोजना


117

निम्नलिखित मैट्रिक्स को देखते हुए मान लें कि मैं स्तंभ दो में अधिकतम मान प्राप्त करना चाहता हूं:

mat <- matrix(c(1:3,7:9,4:6), byrow = T, nc = 3)
mat
     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    7    8    9
[3,]    4    5    6

मुझे पता है कि मैं max(mat[,2])वापस आऊंगा। मैं इस पंक्ति दो में, पंक्ति सूचकांक को कैसे वापस कर सकता हूं?

जवाबों:



27

देखते हैं ?order। आपको बस अंतिम सूचकांक (या पहले, घटते क्रम में) की आवश्यकता है, इसलिए यह चाल चलनी चाहिए:

order(matrix[,2],decreasing=T)[1]

5
+1 मुझे यह उत्तर पसंद है क्योंकि यह मुझे केवल अधिकतम की बजाय शीर्ष कुछ को आसानी से देखने की अनुमति देता है। मैंने इसे अन्य कॉलम से अधिकतम मानों की तारीखों को देखने के लिए उपयोगी पाया है।
djhocking

7
लेकिन ध्यान रखें कि यह किस से अधिक धीमा है। क्योंकि आपको पूरे कॉलम को सॉर्ट करने की आवश्यकता है :)
bartektartanus

@bartektartanus और आप किस तरह मान लेते हैं कि कौन से अधिकतम आंकड़े बाहर निकले हैं? : पी
निक उलले

10
बिना छांटे, बिल्कुल। अधिकतम आवश्यकताओं को पता लगाने के लिए O (n), छंटाई में अधिक समय की आवश्यकता होती है :)
bartektartanus

मैं रैंक और ऑर्डर के बीच उलझ गया। orderप्रत्येक तत्व के सूचकांक को लौटाता है, लेकिन तत्वों के मूल्य द्वारा क्रमबद्ध होता है। यदि सूची पहले छांटी गई थी, तो rankसूचकांक में प्रत्येक तत्व होगा । इस प्रकार orderवर्तमान सूचकांक मूल्यों को लौटाता है; और पंडों के संदर्भ में "इंडेक्सर" के रूप में उपयोग किया जाता है।
लाल मटर

2

निम्नलिखित के बारे में कैसे, जहां y आपके मैट्रिक्स का नाम है और आप पूरे मैट्रिक्स में अधिकतम की तलाश कर रहे हैं:

row(y)[y==max(y)]

यदि आप पंक्ति निकालना चाहते हैं:

y[row(y)[y==max(y)],] # this returns unsorted rows.

क्रमबद्ध पंक्तियों का उपयोग करने के लिए:

y[sort(row(y)[y==max(y)]),]

इस दृष्टिकोण का लाभ यह है कि आप सशर्त को अपनी ज़रूरत के अनुसार बदल सकते हैं। इसके अलावा, col(y)लटकने वाले अल्पविराम के उपयोग और स्थान से आप कॉलम भी निकाल सकते हैं।

y[,col(y)[y==max(y)]]

किसी विशेष कॉलम में अधिकतम के लिए सिर्फ पंक्ति खोजने के लिए, कॉलम 2 का उपयोग करें जिसे आप उपयोग कर सकते हैं:

seq(along=y[,2])[y[,2]==max(y[,2])]

अलग-अलग आवश्यकताओं के लिए फिर से सशर्त लचीला है।

अतिरिक्त विचारों के लिए फिल स्पेक्टर का उत्कृष्ट "एस एंड एस-प्लस" अध्याय 5 के लिए एक परिचय देखें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.