मुख्य सामग्री पर जाएँ

R में डेटा को कैसे Sort करें: एक पूर्ण ट्यूटोरियल

व्यावहारिक उदाहरणों के साथ R में order(), sort() और dplyr के arrange() का उपयोग करके वेक्टर, डेटा फ्रेम और अधिक को sort करना सीखें।
· 6 मि॰ पढ़ें

AI के साथ खोजें

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 पर है, और अन्य मान बढ़ते क्रम में व्यवस्थित हैं।

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
genderagedegree
male40MA
female57BSCS
male66BE
female61BSCS
female48MA
male25MA
female49BE
male52ME
female57MA
female35MA

ऊपर दिया कोड निम्न आउटपुट देता है, जो नया बनाया गया डेटा फ्रेम दिखाता है।

  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),]
 genderagedegree
6male25MA
10female35MA
1male40MA
5female48MA
7female49BE
8male52ME
2female57BSCS
9female57MA
4female61BSCS
3male66BE

ऊपर दिया कोड निम्न आउटपुट देता है:

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 विधियों की तुलना

FunctionReturnsBest ForPackage
sort()Sorted valuesVectorsBase R
order()IndicesData frames, complex sortingBase R
arrange()Sorted data frameTidyverse workflowsdplyr
setorder()Modifies in placeLarge 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 में पाइप्स पर हमारी गाइड देखें।

विषय