2010-09-22 13 views
30

पर आधारित बॉक्सप्लॉट को सॉर्ट करना मैं मध्यस्थ मूल्य द्वारा क्रमबद्ध बॉक्सप्लॉट की एक श्रृंखला बनाने के लिए आर का उपयोग करना चाहता हूं। तो मान लीजिए कि मैं निष्पादित करें:औसत मूल्य

boxplot(cost ~ type) 

यह मैं देना होगा कुछ boxplots थे लागत y अक्ष पर दिखाया गया है और प्रकार श्रेणी x- अक्ष पर दिखाई दे रहा है:

-----  ----- 
    |   | 
[ ]  | 
    |  [ ] 
    |   | 
-----  ----- 
    A   B 

हालांकि, मैं क्या ' डी बॉक्सप्लॉट आंकड़े उच्चतम से निम्नतम औसत मूल्य से क्रमबद्ध हैं। मेरा संदेह यह है कि मुझे जो करना है वह प्रकार (ए या बी) के लेबल को संख्यात्मक रूप से इंगित करने के लिए है जो सबसे कम और उच्चतम औसत मूल्य है, लेकिन मुझे आश्चर्य है कि समस्या को हल करने के लिए एक और चालाक तरीका है या नहीं।

उत्तर

44

?reorder देखें। उदाहरण आप जो चाहते हैं वह प्रतीत होता है, लेकिन विपरीत क्रम में क्रमबद्ध किया गया है। मैंने इच्छित क्रम में क्रमबद्ध करने के लिए नीचे दी गई पहली पंक्ति में -count बदल दिया।

bymedian <- with(InsectSprays, reorder(spray, -count, median)) 
    boxplot(count ~ bymedian, data = InsectSprays, 
      xlab = "Type of spray", ylab = "Insect count", 
      main = "InsectSprays data", varwidth = TRUE, 
      col = "lightgray") 
10

हां, यह विचार है:

> set.seed(42)      # fix seed  
> DF <- data.frame(type=sample(LETTERS[1:5], 100, replace=TRUE), 
+     cost=rnorm(100)) 
> 
> boxplot(cost ~ type, data=DF) # not ordered by median 
> 
> # compute index of ordered 'cost factor' and reassign   
> oind <- order(as.numeric(by(DF$cost, DF$type, median)))  
> DF$type <- ordered(DF$type, levels=levels(DF$type)[oind]) 
> 
> boxplot(cost ~ type, data=DF) # now it is ordered by median 
0

लापता मूल्यों से सावधान रहें, आप na.rm = TRUE जोड़ने के लिए यह काम करने के लिए किया है। यदि नहीं, तो कोड बस काम नहीं करता है। मुझे यह पता लगाने में घंटों लगे।

bymedian <- with(InsectSprays, reorder(spray, -count, median, **na.rm = TRUE**) 
    boxplot(count ~ bymedian, data = InsectSprays, 
      xlab = "Type of spray", ylab = "Insect count", 
      main = "InsectSprays data", varwidth = TRUE, 
      col = "lightgray") 
+1

आपको यह निर्दिष्ट करना चाहिए कि यह [जोशुआ उलरिच के उत्तर] (http://stackoverflow.com/a/3766007/3982001) को संदर्भित करता है। यह वास्तव में एक टिप्पणी होना चाहिए, लेकिन यह एक अलग जवाब के रूप में भी अपने आप खड़े हो सकते हैं। –

+0

मैंने इसे "उत्तर नहीं" के रूप में फ़्लैग किया क्योंकि सटीक वही उत्तर पोस्ट किया गया है (और स्वीकार किया गया है)। उपयोगकर्ता ने अभी नया तर्क जोड़ा है। यह समाधान की गुणवत्ता में सुधार नहीं करता है और एक अलग उत्तर होने के लिए पर्याप्त नहीं है। – PoGibas

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