आर में कारकों से निपटना काफी असाधारण नौकरी है, मुझे स्वीकार करना होगा ... कारक स्तरों को पुन: व्यवस्थित करते समय, आप अंतर्निहित संख्यात्मक मानों को पुन: व्यवस्थित नहीं कर रहे हैं।यदि आप सांख्यिक को यह कारक कनवर्ट करते हैं, आप मिल जाएगा, अब
> numbers = 1:4
> letters = factor(letters[1:4])
> dtf <- data.frame(numbers, letters)
> dtf
numbers letters
1 1 a
2 2 b
3 3 c
4 4 d
> sapply(dtf, class)
numbers letters
"integer" "factor"
: यह एक छोटा सा प्रदर्शन है
# return underlying numerical values
1> with(dtf, as.numeric(letters))
[1] 1 2 3 4
# change levels
1> levels(dtf$letters) <- letters[4:1]
1> dtf
numbers letters
1 1 d
2 2 c
3 3 b
4 4 a
# return numerical values once again
1> with(dtf, as.numeric(letters))
[1] 1 2 3 4
आप देख सकते हैं ... स्तर को बदलने से, आप के स्तर को केवल बदलने (कौन बताएगा, आह?), संख्यात्मक मूल्य नहीं! लेकिन, जब आप factor
फ़ंक्शन का उपयोग करते हैं तो @ जोनाथन चांग ने सुझाव दिया है, कुछ अलग होता है: आप संख्यात्मक मान स्वयं बदलते हैं।
आप एक बार फिर से त्रुटि हो रही है क्योंकि आप levels
और फिर factor
साथ यह relevel की कोशिश करो। ऐसा मत करो !!! levels
का उपयोग करें या आप गड़बड़ कर लेंगे (जब तक कि आप बिल्कुल नहीं जानते कि आप क्या कर रहे हैं)।
एक Lil 'सुझाव: आर के वस्तुओं के रूप में एक समान नाम के साथ अपने वस्तुओं नामकरण (df
एफ वितरण के लिए घनत्व समारोह, letters
लोअरकेस वर्णमाला के अक्षरों को देता है) से बचें। इस विशेष मामले में, आपका कोड दोषपूर्ण नहीं होगा, लेकिन कभी-कभी यह हो सकता है ... लेकिन यह भ्रम पैदा कर सकता है, और हम यह नहीं चाहते हैं, क्या हम?! =)
इसके बजाय, कुछ इस तरह का उपयोग करें (मैं शुरुआत एक बार फिर से) से प्राप्त करेंगे:
> dtf <- data.frame(f = 1:4, g = factor(letters[1:4]))
> dtf
f g
1 1 a
2 2 b
3 3 c
4 4 d
> with(dtf, as.numeric(g))
[1] 1 2 3 4
> dtf$g <- factor(dtf$g, levels = letters[4:1])
> dtf
f g
1 1 a
2 2 b
3 3 c
4 4 d
> with(dtf, as.numeric(g))
[1] 4 3 2 1
ध्यान दें कि आप भी आप df
साथ data.frame
और g
के बजाय letters
, नाम कर सकते हैं और परिणाम ठीक रहेगा। असल में, यह कोड आपके द्वारा पोस्ट किए गए एक के समान है, केवल नाम बदल दिए गए हैं। यह भाग factor(dtf$letter, levels = letters[4:1])
कोई त्रुटि नहीं फेंक देगा, लेकिन यह उलझन में हो सकता है!
?factor
मैन्युअल रूप से मैन्युअल पढ़ें! factor(g, levels = letters[4:1])
और factor(g, labels = letters[4:1])
के बीच क्या अंतर है? levels(g) <- letters[4:1]
और g <- factor(g, labels = letters[4:1])
में समान क्या है?
आप ggplot वाक्यविन्यास डाल सकते हैं, इसलिए हम इस पर आपकी सहायता कर सकते हैं!
चीयर्स !!!
संपादित करें:
ggplot2
वास्तव में दोनों स्तरों और मूल्यों को बदलने के लिए की आवश्यकता है? एचएम ... मैं इसे एक खोद दूंगा ...
सावधान रहें धन्यवाद, यह काम किया। कुछ अजीब कारणों से ggplot ने अब पौराणिक कथाओं में क्रम को सही ढंग से बदल दिया है, लेकिन साजिश में नहीं। अजीब। – crangos
ggplot2 ने मुझे स्तरों के क्रम (ऊपर देखें) और डेटा फ्रेम के मानों के क्रम दोनों को बदलने की आवश्यकता है। डीएफ <- डीएफ [एनआरओ (डीएफ): 1,] # रिवर्स – crangos