R Language
डेटाटेबल के साथ पिवट और अनपिवेट
खोज…
वाक्य - विन्यास
- पिघल के साथ
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