data.table
कॉलम जोड़ना और संशोधित करना
खोज…
टिप्पणियों
आधिकारिक संदर्भ , "संदर्भ शब्दार्थ" , इस विषय का सबसे अच्छा परिचय है।
एक अनुस्मारक: DT[where, select|update|do, by]
सिंटैक्स का उपयोग डेटा के स्तंभ के साथ काम करने के लिए किया जाता है।
- "जहां" भाग
i
तर्क है - "सेलेक्ट | अपडेट | डू" पार्ट
j
तर्क है
इन दो तर्कों को आमतौर पर नाम के बजाय स्थिति से पारित किया जाता है।
कॉलम के सभी संशोधन j
में किए जा सकते हैं। इसके अतिरिक्त, set
फ़ंक्शन इस उपयोग के लिए उपलब्ध है।
मूल्यों का संपादन
# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)
एक कॉलम का संपादन
नए कॉलम बनाने या मौजूदा वाले को संशोधित करने के लिए j
अंदर :=
ऑपरेटर का उपयोग करें:
DT[, mpg_sq := mpg^2]
पंक्तियों के सबसेट पर संपादन
पंक्तियों को "जहाँ संपादन किया जाना चाहिए" को समाप्त करने के लिए i
तर्क का उपयोग करें:
DT[1:3, newvar := "Hello"]
जैसा कि डेटा.फ्रेम में है, हम पंक्ति संख्याओं या तार्किक परीक्षणों का उपयोग करके कम कर सकते हैं। यह भी [ "शामिल हों" में उपयोग करना संभव है i
जब संशोधित] [need_a_link]।
एक कॉलम हटाना
NULL
सेटिंग करके कॉलम निकालें:
DT[, mpg_sq := NULL]
ध्यान दें कि हम नहीं <-
परिणाम असाइन करते हैं, के बाद से DT
यथा-स्थान संशोधित किया गया है।
कई स्तंभों का संपादन
:=
ऑपरेटर के बहुभिन्नरूपी प्रारूप का उपयोग करके कई कॉलम जोड़ें:
DT[, `:=`(mpg_sq = mpg^2, wt_sqrt = sqrt(wt))]
# or
DT[, c("mpg_sq", "wt_sqrt") := .(mpg^2, sqrt(wt))]
.()
सिंटैक्स का उपयोग तब किया जाता है जब LHS := RHS
के दाहिने-हाथ LHS := RHS
कॉलम की एक सूची होती है।
कई क्रमिक रूप से निर्भर स्तंभों का संपादन
यदि स्तंभ निर्भर हैं और उन्हें अनुक्रम में परिभाषित किया जाना चाहिए, तो ऐसा करने के कुछ तरीके हैं:
DT[, c("mpg_sq", "mpg2_hp") := .(temp1 <- mpg^2, temp1/hp)]
# or
DT[, c("mpg_sq", "mpg2_hp") := {temp1 = mpg^2; .(temp1, temp1/hp)}]
स्तंभों को गतिशील रूप से निर्धारित नामों से संपादित करना
गतिशील रूप से निर्धारित कॉलम नामों के लिए, कोष्ठक का उपयोग करें:
vn = "mpg_sq"
DT[, (vn) := mpg^2]
set
का उपयोग करना
ओवरहेड में एक छोटी सी कमी के लिए कॉलम को set
के साथ भी संशोधित किया जा सकता है, हालांकि यह बहुत कम आवश्यक है:
set(DT, j = "hp_over_wt", v = mtcars$hp/mtcars$wt)
स्तंभों को पुन: व्यवस्थित करना
# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)
स्तंभों के क्रम को पुनर्व्यवस्थित करने के लिए, setcolorder
उपयोग setcolorder
। उदाहरण के लिए, उन्हें उल्टा करना
setcolorder(DT, rev(names(DT)))
यह प्रदर्शन के संदर्भ में लगभग कुछ भी नहीं खर्च करता है, क्योंकि यह data.table में कॉलम पॉइंटर्स की सूची को अनुमति दे रहा है।
स्तंभों का नाम बदल रहा है
# example data
DT = as.data.table(mtcars, keep.rownames = TRUE)
एक स्तंभ का नाम बदलने के लिए (जबकि उसके डेटा को समान रखते हुए), एक नए नाम के साथ स्तंभ में डेटा को कॉपी करने और पुराने को हटाने की कोई आवश्यकता नहीं है। इसके बजाय, हम उपयोग कर सकते हैं
setnames(DT, "mpg_sq", "mpq_squared")
संदर्भ द्वारा मूल कॉलम को संशोधित करने के लिए।
कारक स्तरों और अन्य कॉलम विशेषताओं को संशोधित करना
# example data
DT = data.table(iris)
संदर्भ द्वारा कारक स्तरों को संशोधित करने के लिए, setattr
उपयोग setattr
:
setattr(DT$Species, "levels", c("set", "ver", "vir")
# or
DT[, setattr(Species, "levels", c("set", "ver", "vir"))]
दूसरा विकल्प परिणाम को स्क्रीन पर प्रिंट कर सकता है।
setattr
साथ, हम levels(x) <- lvls
करते समय आमतौर पर होने वाली कॉपी से बचते हैं, लेकिन यह कुछ चेक को छोड़ देगा, इसलिए स्तरों के वैध वेक्टर को असाइन करने के लिए सावधानी बरतना महत्वपूर्ण है।