R आरोही या अवरोही क्रम में डेटा sort करने के अलग-अलग तरीके प्रदान करता है; डेटा विश्लेषक और डेटा वैज्ञानिक, प्राप्त डेटा की संरचना के अनुसार डेटा sort करने के लिए order(), sort() और dplyr जैसे पैकेजों का उपयोग करते हैं।
TL;DR
sort()का उपयोग सीधे किसी वेक्टर को sort करने और sort किए हुए मान वापस पाने के लिए करेंorder()का उपयोग ऐसे इंडेक्स पाने के लिए करें जो किसी वेक्टर को sort करेंगे—डेटा फ्रेम sort करने के लिए आदर्श- डेटा फ्रेम को आधुनिक और पठनीय तरीके से sort करने के लिए
dplyr::arrange()का उपयोग करें na.lastपैरामीटर से NA मानों को संभालें (TRUE पर NAs अंत में, FALSE पर शुरुआत में रखे जाते हैं)decreasing = TRUEया माइनस साइन का उपयोग करके अवरोही क्रम में sort करें
order() वेक्टर, मैट्रिक्स को sort कर सकता है, और डेटा फ्रेम भी इसकी मदद से आरोही और अवरोही क्रम में sort किया जा सकता है, जैसा कि इस ट्यूटोरियल के आखिरी भाग में दिखाया गया है।
order() का सिंटैक्स
sort() फ़ंक्शन
order() में जाने से पहले, सरल sort() फ़ंक्शन पर नज़र डालते हैं। जहाँ order() इंडेक्स लौटाता है, वहीं sort() सीधे sort किए हुए मान लौटाता है:
# Create a vector
values <- c(4, 12, 6, 7, 2, 9, 5)
# sort() returns the sorted values directly
sort(values)
[1] 2 4 5 6 7 9 12
मुख्य अंतर यह है कि sort() आपको वास्तविक sort किए हुए मान देता है, जबकि order() आपको स्थितियाँ (positions) देता है। यही कारण है कि order() डेटा फ्रेम sort करने में अधिक उपयोगी है, जैसा कि आगे देखेंगे।
order() का सिंटैक्स
order() का सिंटैक्स नीचे दिखाया गया है:
order(x, decreasing = TRUE or FALSE, na.last = TRUE or FALSE, method = c("auto", "shell", "quick", "radix"))
order() में ऊपर बताए गए आर्ग्युमेंट्स का अर्थ:
- x: डेटा फ्रेम, मैट्रिक्स या वेक्टर
- decreasing: बूलियन मान; TRUE होने पर अवरोही क्रम में sort, FALSE होने पर आरोही क्रम में।
- na.last: बूलियन मान; TRUE होने पर NA इंडेक्स अंत में, FALSE होने पर शुरुआत में रखे जाते हैं।
- method: प्रयुक्त होने वाली sorting विधि।
order() R में
आइए order() के एक उदाहरण को देखते हैं।
नीचे का कोड y नामक एक वेक्टर बनाता है जिसमें संख्याओं की सूची है। मैं order(y) का उपयोग उन इंडेक्स को पाने के लिए करूँगा जो इन संख्याओं को sort करेंगे।
y <- c(4, 12, 6, 7, 2, 9, 5)
order(y)
ऊपर दिया कोड निम्न आउटपुट देता है:
5 1 7 3 4 6 2
यहाँ order() दिए गए संख्याओं को उनके इंडेक्स के अनुसार आरोही क्रम में sort करेगा। चूँकि 2 सबसे छोटी है, जिसका इंडेक्स पाँच है, और 4 का इंडेक्स 1 है, और इसी तरह, प्रक्रिया इसी पैटर्न में आगे बढ़ती है।
y <- c(4, 12, 6, 7, 2, 9, 5)
y[order(y)]
ऊपर दिया कोड निम्न आउटपुट देता है:
2 4 5 6 7 9 12
यहाँ order की इंडेक्सिंग के जरिए वास्तविक मानों को आरोही क्रम में प्रिंट किया गया है। मानों को order() से प्राप्त इंडेक्स के अनुसार क्रमबद्ध किया जाता है और फिर प्रत्येक मान को y[some-value] का उपयोग कर एक्सेस किया जाता है।
order() में अलग-अलग पैरामीटर का उपयोग करके वेक्टर sort करना
आइए एक उदाहरण देखें जहाँ डेटासेट में NA (Not available) मान मौजूद है।
order(x,na.last=TRUE)
x <- c(8, 2, 4, 1, -4, NA, 46, 8, 9, 5, 3)
order(x, na.last = TRUE)
ऊपर दिया कोड निम्न आउटपुट देता है:
5 4 2 11 3 10 1 8 9 7 6
यहाँ order() दिए गए संख्याओं की सूची को उनके इंडेक्स के अनुसार आरोही क्रम में sort करेगा। चूँकि NA मौजूद है, उसका इंडेक्स अंत में रखा जाएगा, यानी 6 अंत में रखा जाएगा क्योंकि na.last=TRUE है।
order(x,na.last=FALSE)
order(x, na.last = FALSE)
ऊपर दिया कोड निम्न आउटपुट देता है:
6 5 4 2 11 3 10 1 8 9 7
यहाँ order() दिए गए संख्याओं की सूची को उनके इंडेक्स के अनुसार आरोही क्रम में sort करेगा। चूँकि NA मौजूद है, उसका इंडेक्स, जो 6 है, शुरुआत में रखा जाएगा क्योंकि na.last=FALSE है।
order(x,decreasing=TRUE,na.last=TRUE)
order(x, decreasing = TRUE, na.last = TRUE)
ऊपर दिया कोड निम्न आउटपुट देता है:
7 9 1 8 10 3 11 2 4 5 6
यहाँ order() decreasing=TRUE होने के कारण दिए गए संख्याओं की सूची को उनके इंडेक्स के अनुसार अवरोही क्रम में sort करेगा: 46 सबसे बड़ा मान है जो इंडेक्स 7 पर है, और अन्य मान घटते क्रम में व्यवस्थित हैं। चूँकि NA मौजूद है, इंडेक्स 6 अंत में रखा जाएगा क्योंकि na.last=TRUE है।
order(x,decreasing=FALSE,na.last=FALSE)
order(x, decreasing = FALSE, na.last = FALSE)
ऊपर दिया कोड निम्न आउटपुट देता है:
6 5 4 2 11 3 10 1 8 9 7
यहाँ NA मौजूद है जिसका इंडेक्स 6 है, जो na.last=FALSE होने के कारण सबसे पहले रखा जाएगा। order() decreasing=FALSE होने के कारण संख्याओं की सूची को उनके इंडेक्स के अनुसार आरोही क्रम में sort करेगा: -4, जो सबसे छोटा है, इंडेक्स 5 पर है, और अन्य मान बढ़ते क्रम में व्यवस्थित हैं।
Start Learning R For Free
इंटरमीडिएट R
order() का उपयोग करके डेटा फ्रेम sort करना
आइए एक डेटा फ्रेम बनाते हैं जहाँ population का मान 10 है। gender वेरिएबल में 'male' और 'female' के वेक्टर मान हैं, जहाँ 10 सैंपल मान sample() की मदद से प्राप्त किए जा सकते हैं, जबकि replace = TRUE केवल यूनिक मान उत्पन्न करेगा। इसी तरह, age में 25 से 75 तक के मान होंगे, और degree में संभावित मान c("MA," "ME," "BE," "BSCS") होंगे, जो फिर से यूनिक मान उत्पन्न करेंगे।
कार्य: दिए गए population की age के आधार पर डेटा को आरोही क्रम में sort करना।
नोट: सैंपल डेटा, जब आप इसे अपनी लोकल मशीन पर चलाएँगे, तो अलग हो सकता है क्योंकि हर बार कोड चलाने पर एक यूनिक डेटा फ्रेम बनता है।
population <- 10
gender <- sample(c("male", "female"), population, replace = TRUE)
age <- sample(25:75, population, replace = TRUE)
degree <- sample(c("MA", "ME", "BE", "BSCS"), population, replace = TRUE)
final_data <- data.frame(gender = gender, age = age, degree = degree)
final_data
| gender | age | degree |
|---|---|---|
| male | 40 | MA |
| female | 57 | BSCS |
| male | 66 | BE |
| female | 61 | BSCS |
| female | 48 | MA |
| male | 25 | MA |
| female | 49 | BE |
| male | 52 | ME |
| female | 57 | MA |
| female | 35 | MA |
ऊपर दिया कोड निम्न आउटपुट देता है, जो नया बनाया गया डेटा फ्रेम दिखाता है।
gender age degree
male 40 MA
female 57 BSCS
male 66 BE
female 61 BSCS
female 48 MA
male 25 MA
female 49 BE
male 52 ME
female 57 MA
female 35 MA
आइए age वेरिएबल के आधार पर order() का उपयोग करके डेटा फ्रेम को आरोही क्रम में sort करें।
order(final_data$age)
ऊपर दिया कोड निम्न आउटपुट देता है:
6 10 3 9 5 8 4 2 7 1
क्योंकि age 25 इंडेक्स 6 पर है, उसके बाद age 35 इंडेक्स 10 पर है, और इसी तरह, सभी age-संबंधित मान आरोही क्रम में व्यवस्थित हैं।
नीचे दिए कोड में [] के साथ age वेरिएबल का order है, जिसका उपयोग आरोही क्रम में व्यवस्थित करने के लिए किया गया है, जहाँ gender और degree की जानकारी भी प्रिंट होती है।
final.data[order(final.data$age),]
| gender | age | degree | |
|---|---|---|---|
| 6 | male | 25 | MA |
| 10 | female | 35 | MA |
| 1 | male | 40 | MA |
| 5 | female | 48 | MA |
| 7 | female | 49 | BE |
| 8 | male | 52 | ME |
| 2 | female | 57 | BSCS |
| 9 | female | 57 | MA |
| 4 | female | 61 | BSCS |
| 3 | male | 66 | BE |
ऊपर दिया कोड निम्न आउटपुट देता है:
gender age degree
6 male 25 MA
10 female 35 MA
1 male 40 MA
5 female 48 MA
7 female 49 BE
8 male 52 ME
2 female 57 BSCS
9 female 57 MA
4 female 61 BSCS
3 male 66 BE
ऊपर का आउटपुट दिखाता है कि age को उसके संबंधित gender और degree की जानकारी के साथ आरोही क्रम में व्यवस्थित किया गया है।
dplyr के arrange() के साथ Sorting
और अधिक पठनीय और आधुनिक तरीके के लिए, आप dplyr पैकेज के arrange() फ़ंक्शन का उपयोग कर सकते हैं। यह विशेष रूप से tidyverse इकोसिस्टम के साथ काम करते समय उपयोगी है:
# Install dplyr if needed: install.packages("dplyr")
library(dplyr)
# Sort by age in ascending order
final_data %>% arrange(age)
# Sort by age in descending order
final_data %>% arrange(desc(age))
# Sort by multiple columns
final_data %>% arrange(gender, desc(age))
arrange() फ़ंक्शन को डेटा विश्लेषण वर्कफ़्लोज़ में अक्सर प्राथमिकता दी जाती है क्योंकि यह pipe ऑपरेटर का उपयोग करते हुए filter(), select(), और mutate() जैसे अन्य dplyr फ़ंक्शंस के साथ बखूबी एकीकृत हो जाता है।
Sorting विधियों की तुलना
| Function | Returns | Best For | Package |
|---|---|---|---|
sort() |
Sorted values | Vectors | Base R |
order() |
Indices | Data frames, complex sorting | Base R |
arrange() |
Sorted data frame | Tidyverse workflows | dplyr |
setorder() |
Modifies in place | Large datasets (memory efficient) | data.table |
निष्कर्ष
इस ट्यूटोरियल में, मैंने R में डेटा sort करने की आवश्यक विधियाँ कवर कीं:
- वेक्टर को सीधे sort करने के लिए
sort() - वेक्टर और डेटा फ्रेम sort करने के लिए इंडेक्स पाने हेतु
order() na.lastपैरामीटर से NA मानों का प्रबंधन- आधुनिक, पठनीय डेटा फ्रेम sorting के लिए
dplyr::arrange() - जटिल क्रमबद्धता के लिए मल्टी-कॉलम sorting
अधिक जानकारी के लिए, order() के लिए आधिकारिक R डाक्यूमेंटेशन देखें।
यदि आप R के बारे में और सीखना चाहते हैं, तो DataCamp का Introduction to R कोर्स करें। आप हमारी data.table ट्यूटोरियल भी देख सकते हैं उच्च-प्रदर्शन डेटा मैनिपुलेशन के लिए, या साफ-सुथरे कोड के लिए R में पाइप्स पर हमारी गाइड देखें।