खोज…


टिप्पणियों

एक अनुस्मारक: DT[where, select|update|do, by] सिंटैक्स का उपयोग डेटा के स्तंभ के साथ काम करने के लिए किया जाता है।

  • "जहां" भाग i तर्क है
  • "सेलेक्ट | अपडेट | डू" पार्ट j तर्क है

इन दो तर्कों को आमतौर पर नाम के बजाय स्थिति से पारित किया जाता है।

प्रत्येक समूह के भीतर पंक्तियों का चयन करना

# example data
DT <- data.table(Titanic)

मान लीजिए कि, प्रत्येक सेक्स के लिए, हम उच्चतम जीवित संख्या के साथ पंक्तियाँ चाहते हैं:

DT[Survived == "Yes", .SD[ N == max(N) ], by=Sex]

#    Class    Sex   Age Survived   N
# 1:  Crew   Male Adult      Yes 192
# 2:   1st Female Adult      Yes 140

.SD प्रत्येक Sex जुड़े डेटा का सबसेट है; और हम इस स्थिति को और कम कर रहे हैं, जो हमारी स्थिति को पूरा करती है। यदि गति महत्वपूर्ण है, तो इसके बजाय SO पर eddi द्वारा सुझाए गए दृष्टिकोण का उपयोग करें:

DT[ DT[Survived == "Yes", .I[ N == max(N) ], by=Sex]$V1 ]

#    Class    Sex   Age Survived   N
# 1:  Crew   Male Adult      Yes 192
# 2:   1st Female Adult      Yes 140

नुकसान

कोड की अंतिम पंक्ति में, .I पूर्ण डेटा की पंक्ति संख्या को संदर्भित करता है। हालाँकि, यह सच नहीं है, जब कोई इसके साथ नहीं by :

DT[ Survived == "Yes", .I]

# 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16

DT[ Survived == "Yes", .I, by=Sex]$I

# 17 18 19 20 25 26 27 28 21 22 23 24 29 30 31 32

समूहों का चयन करना

# example data
DT = data.table(Titanic)

मान लीजिए कि हम केवल दूसरी श्रेणी देखना चाहते हैं:

DT[ Class == "2nd" ]

#    Class    Sex   Age Survived   N
# 1:   2nd   Male Child       No   0
# 2:   2nd Female Child       No   0
# 3:   2nd   Male Adult       No 154
# 4:   2nd Female Adult       No  13
# 5:   2nd   Male Child      Yes  11
# 6:   2nd Female Child      Yes  13
# 7:   2nd   Male Adult      Yes  14
# 8:   2nd Female Adult      Yes  80

यहां, हम केवल i , "जहां" क्लॉज का उपयोग करके डेटा को सब्मिट करते हैं।

शर्त के आधार पर समूहों का चयन करना

# example data
DT = data.table(Titanic)

मान लीजिए कि हम प्रत्येक वर्ग को केवल तभी देखना चाहते हैं जब बहुमत बच गया:

DT[, if (sum(N[Survived=="Yes"]) > sum(N[Survived=="No"]) ) .SD, by=Class]

#    Class    Sex   Age Survived   N
# 1:   1st   Male Child       No   0
# 2:   1st Female Child       No   0
# 3:   1st   Male Adult       No 118
# 4:   1st Female Adult       No   4
# 5:   1st   Male Child      Yes   5
# 6:   1st Female Child      Yes   1
# 7:   1st   Male Adult      Yes  57
# 8:   1st Female Adult      Yes 140

यहाँ, हम उप-समूह की डेटा वापस .SD केवल तभी हमारी स्थिति उत्पन्न होने पर। एक विकल्प है

DT[, .SD[ sum(N[Survived=="Yes"]) > sum(N[Survived=="No"]) ) ], by=Class]

लेकिन यह कभी-कभी धीमा साबित हुआ है।



Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow