2011-11-22 14 views
5

मैं निम्नलिखित डेटा के साथ एक डेटा फ्रेम है:क्या पीएमएक्स इंडेक्स की तरह कुछ है?

date=strptime(c(20110101,20110102,20110103,20110104,20110105,20110106),'%Y%m%d') 
rate1=c(1,2,3,4,5,6) 
rate2=c(2,1,3,6,8,4) 
rate3=c(4,1,3,6,8,3) 
rate4=c(7,8,9,2,1,8) 
z=data.frame(date,rate1,rate2,rate3,rate4) 
z$max=pmax(rate1,rate2,rate3,rate4) 

Pmax समारोह मुझे उस रिकॉर्ड के लिए अधिकतम लाभ उठा सकें, लेकिन कैसे मुझे लगता है कि रिकार्ड के लिए अधिकतम मूल्य के सूचकांक प्राप्त कर सकते हैं मैं सोच रहा था ।

कहाँ z $ अधिकतम 7,8,9,6,8,8 बराबर होता है, मैं 5,5,5,3,3,5

प्राप्त करना चाहते हैं यह संभव है? मुझे पता है कि यह कुछ आसान लगता है लेकिन मुझे कहीं भी जवाब नहीं मिल रहा है।

उत्तर

3

आधार आर में बहुत ही सरल:

z$wmax <- apply(z[, -c(1,6)],1, which.max) 

वास्तव में है कि आप के बाद से मैं पहले कॉलम बाहर रखा के लिए क्या पूछ रहे थे की तुलना में 1 कम देता है, लेकिन है कि आसानी से एक जोड़कर से ठीक किया जा सकता है।

z$max_col_n <- apply(z[, -c(1,6)],1, which.max) +1 
+0

धन्यवाद, जो भी काम करता है .min जो उपयोगी साबित होगा! – thequerist

13

आप max.col इस्तेमाल कर सकते हैं:

> z$max = max.col(z[2:5])+1 
> z 
     date rate1 rate2 rate3 rate4 max 
1 2011-01-01  1  2  4  7 5 
2 2011-01-02  2  1  1  8 5 
3 2011-01-03  3  3  3  9 5 
4 2011-01-04  4  6  6  2 3 
5 2011-01-05  5  8  8  1 3 
6 2011-01-06  6  4  3  8 5 

मुझे लगता है कि आप मतलब है कि आप सूचकांक चाहता था, लेकिन आप केवल 4 वैक्टर वहाँ का उपयोग करें, तो आप क्या चाहते हैं खोजने के लिए, आप के लिए होता सूचकांक को खोजने के लिए और फिर 1.

+0

धन्यवाद, बहुत सीधा। – thequerist

+2

दस्तावेज़ीकरण की समीक्षा न भूलें क्योंकि उस फ़ंक्शन में तर्क है ties.method = c ("यादृच्छिक", "पहला", "अंतिम") 'और डिफ़ॉल्ट रूप से विधि' यादृच्छिक 'का उपयोग कर रहा है। – Galled

+0

हां, मैंने देखा, लेकिन इसे इंगित करने के लिए धन्यवाद। – thequerist

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