खोज…


वाक्य - विन्यास

  • पिघल के साथ melt(DT, id.vars=c(..), variable.name="CategoryLabel", value.name="Value")
  • कास्ट के साथ कास्ट dcast(DT, LHS ~ RHS, value.var="Value", fun.aggregate=sum)

पैरामीटर

पैरामीटर विवरण
id.vars बता melt जो कॉलम बनाए रखने के लिए
चर का नाम बता melt क्या साथ श्रेणी लेबल स्तंभ कॉल करने के लिए
value.name बता melt क्या स्तंभ के साथ श्रेणी लेबल जुड़े मूल्यों है कि कॉल करने के लिए
value.var बताएं कि कॉलम में कास्ट करने के लिए वैल्यू कहां से dcast
सूत्र बताएं कि dcast सा कॉलम एक अद्वितीय रिकॉर्ड पहचानकर्ता (LHS) बनाए रखने के लिए और कौन सा श्रेणी लेबल (RHS) रखता है
fun.aggregate कास्टिंग ऑपरेशन प्रत्येक सेल में मानों की सूची बनाते समय उपयोग करने के लिए फ़ंक्शन निर्दिष्ट करें

टिप्पणियों

क्या निर्माण मॉडल या दृश्यावलोकन के लिए कंडीशनिंग डेटा में चला जाता है की ज्यादातर के साथ पूरा किया जा सकता data.table । अन्य विकल्पों की तुलना में, data.table गति और लचीलेपन के फायदे प्रदान करता है।

डेटाटेबल के साथ पिवट और अनप्यूट टेबुलर डेटा

विस्तृत रूप से लंबे रूप में परिवर्तित करें

लोड data USArrests से datasets

data("USArrests")
head(USArrests)

           Murder Assault UrbanPop Rape
Alabama      13.2     236       58 21.2
Alaska       10.0     263       48 44.5
Arizona       8.1     294       80 31.0
Arkansas      8.8     190       50 19.5
California    9.0     276       91 40.6
Colorado      7.9     204       78 38.7

अधिक ?USArrests लिए ?USArrests का उपयोग करें। सबसे पहले, data.table कनवर्ट करें। राज्यों के नाम मूल data.frame में पंक्ति नाम हैं।

library(data.table)
DT <- as.data.table(USArrests, keep.rownames=TRUE)

यह विस्तृत रूप में डेटा है। इसमें प्रत्येक चर के लिए एक कॉलम है। जानकारी के नुकसान के बिना डेटा को लंबे समय तक संग्रहीत किया जा सकता है। लंबे रूप में एक स्तंभ होता है जो चर नामों को संग्रहीत करता है। फिर, इसमें चर मानों के लिए एक और कॉलम है। USArrests का लंबा रूप USArrests दिखता है।

            State    Crime  Rate
  1:       Alabama   Murder  13.2
  2:        Alaska   Murder  10.0
  3:       Arizona   Murder   8.1
  4:      Arkansas   Murder   8.8
  5:    California   Murder   9.0
 ---                             
196:      Virginia     Rape  20.7
197:    Washington     Rape  26.2
198: West Virginia     Rape   9.3
199:     Wisconsin     Rape  10.8
200:       Wyoming     Rape  15.6

हम विस्तृत रूप से लंबे रूप में स्विच करने के लिए melt फ़ंक्शन का उपयोग करते हैं।

DTm <- melt(DT)
names(DTm) <- c("State", "Crime", "Rate")

डिफ़ॉल्ट रूप से, सभी डेटा संख्यात्मक डेटा के साथ मानों के साथ चर के रूप में melt है। USArrests , चर UrbanPop किसी राज्य की प्रतिशत शहरी आबादी का प्रतिनिधित्व करता है। यह अन्य variabes, से अलग है Murder , Assault और Rape , जो हिंसक प्रति 100,000 लोगों पर दर्ज किये गए अपराधों रहे हैं। मान लीजिए कि हम UrbanPop कॉलम को बनाए रखना चाहते हैं। हम id.vars को निम्नानुसार सेट करके इसे प्राप्त करते हैं।

DTmu <- melt(DT, id.vars=c("rn", "UrbanPop" ), 
             variable.name='Crime', value.name = "Rate")
names(DTmu)[1] <- "State"

ध्यान दें कि हमने श्रेणी के नाम (मर्डर, value.name आदि) वाले कॉलम को variable.name साथ value.name । मान और मान वाले मान वाले कॉलम को। हमारा डेटा ऐसा दिखता है।

             State UrbanPop  Crime Rate
  1:       Alabama       58 Murder 13.2
  2:        Alaska       48 Murder 10.0
  3:       Arizona       80 Murder  8.1
  4:      Arkansas       50 Murder  8.8
  5:    California       91 Murder  9.0

विभाजन-लागू-संयोजन शैली दृष्टिकोण के साथ सारांश उत्पन्न करना एक हवा है। उदाहरण के लिए, राज्य द्वारा हिंसक अपराधों को संक्षेप में प्रस्तुत करना?

DTmu[, .(ViolentCrime = sum(Rate)), by=State]

यह देता है:

        State ViolentCrime
1:    Alabama        270.4
2:     Alaska        317.5
3:    Arizona        333.1
4:   Arkansas        218.3
5: California        325.6
6:   Colorado        250.6

डेटाटेबल के साथ पिवट और अनप्यूट टेब्युलर डेटा। II - II

लंबे रूप से विस्तृत रूप में परिवर्तित करें

पिछले उदाहरण से डेटा को पुनर्प्राप्त करने के लिए, जैसे dcast उपयोग करें।

DTc <- dcast(DTmu, State + UrbanPop ~ Crime)

यह डेटा को मूल विस्तृत रूप में देता है।

             State UrbanPop Murder Assault Rape
 1:        Alabama       58   13.2     236 21.2
 2:         Alaska       48   10.0     263 44.5
 3:        Arizona       80    8.1     294 31.0
 4:       Arkansas       50    8.8     190 19.5
 5:     California       91    9.0     276 40.6

यहां, एक अद्वितीय रिकॉर्ड पहचानकर्ता (LHS) और नए स्तंभ नामों (RHS) के लिए श्रेणी लेबल वाले स्तंभ बनाने वाले स्तंभों को निर्दिष्ट करने के लिए सूत्र संकेतन का उपयोग किया जाता है। सांख्यिक मूल्यों के लिए किस कॉलम का उपयोग करना है? डिफ़ॉल्ट रूप से, dcast फॉर्मूला विनिर्देशन से बचे संख्यात्मक मान वाले पहले कॉलम का उपयोग करता है। स्पष्ट करने के लिए, स्तंभ नाम के साथ पैरामीटर value.var उपयोग करें।

जब ऑपरेशन प्रत्येक सेल में मानों की एक सूची dcast करता है, तो स्थिति को संभालने के लिए fun.aggregate एक fun.aggregate विधि प्रदान करता है। कहते हैं कि मैं समान शहरी आबादी वाले राज्यों में दिलचस्पी रखता हूं जब अपराध दर की जांच की जाती है। मैं गणना की गई जानकारी के साथ एक कॉलम Decile

DTmu[, Decile := cut(UrbanPop, quantile(UrbanPop, probs = seq(0, 1, by=0.1)))]
levels(DTmu$Decile) <- paste0(1:10, "D")

अब, Decile ~ Crime कास्टिंग प्रति सेल कई मूल्यों का उत्पादन करता है। मैं यह निर्धारित करने के लिए कि ये कैसे संभाले जाते हैं, मैं fun.aggregate का उपयोग कर सकता हूं। पाठ और संख्यात्मक मान दोनों को इस तरह से हैंडल किया जा सकता है।

dcast(DTmu, Decile ~ Crime, value.var="Rate", fun.aggregate=sum)

यह देता है:

dcast(DTmu, Decile ~ Crime, value.var="Rate", fun.aggregate=mean)

यह देता है:

             State UrbanPop  Crime Rate Decile
  1:       Alabama       58 Murder 13.2     4D
  2:        Alaska       48 Murder 10.0     2D
  3:       Arizona       80 Murder  8.1     8D
  4:      Arkansas       50 Murder  8.8     2D
  5:    California       91 Murder  9.0    10D

शहरी आबादी के प्रत्येक निर्णय में कई राज्य हैं। यह कैसे निर्दिष्ट किया जाना चाहिए, यह fun.aggregate लिए fun.aggregate का उपयोग करें।

dcast(DTmu, Decile ~ Crime, value.var="Rate", fun.aggregate=sum)

यह राज्यों की तरह डेटा के लिए रकम देता है, निम्नलिखित दे रहा है।

    Decile Murder Assault  Rape
 1:     1D   39.4     808  62.6
 2:     2D   35.3     815  94.3
 3:     3D   22.6     451  67.7
 4:     4D   54.9     898 106.0
 5:     5D   42.4     758 107.6 


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