मेरे पास डेटा जैसे फ्रेम (49,000 तक 20,000 पंक्तियां) हैं। प्रत्येक पंक्ति में एक अद्वितीय नाम (आईडी) होता है, प्रत्येक आईडी में 3 कॉलम 3 कॉलम में पढ़ा जाता है (उदा। डी 15 सी डी 15 सी .1 डी 15 सी 2)। उपनामों के पहले 4 अक्षर ("डी 15 सी") समूह के नाम हैं। मुझे समूह नामों (जैसे औसत डी 15 सी, डी 15 सी .1 और डी 15.2) प्राप्त करने के लिए स्तंभों को औसत करने की आवश्यकता है, इसलिए अंतिम तालिका 49 कॉलम से 16 कॉलम तक समेकित की जाएगी।आर पंक्ति समूह (या अद्वितीय आईडी) द्वारा कई कॉलम पर है
ID D04C D04C.1 D08H D08H.1 D08H.2 D15C D15C.1 D15C.2 D15L D15L.1 D15L.2
1 1367452_at 11.11 10.93 11.85 10.94 10.87 10.73 10.62 10.85 10.73 10.77 10.52
2 1367453_at 9.65 9.94 9.78 9.68 9.67 9.86 9.71 9.82 9.74 9.71 9.76
3 1367454_at 10.19 10.36 9.68 10.07 10.08 10.35 10.26 10.32 10.27 10.19 10.47
(… 20000 rows)
मैं स्थानांतरित और व्यवस्था कुल का उपयोग करने के निम्न डेटा फ्रेम करने के लिए इसे संपादित:
ID 1367452_at 1367453_at 1367454_at ... ...
1 D04C 11.11 9.65 10.19
2 D04C 10.93 9.94 10.36
3 D08H 11.85 9.78 9.68
4 D08H 10.94 9.68 10.07
5 D08H 10.87 9.67 10.08
6 D15C 10.73 9.86 10.35
7 D15C 10.62 9.71 10.26
8 D15C 10.85 9.82 10.32
9 D15L 10.73 9.74 10.27
10 D15L 10.77 9.71 10.19
11 D15L 10.52 9.76 10.47
लेकिन, निम्नलिखित कुल ("agg" डेटा फ्रेम नाम है) पूरा करने के लिए 370 सेकंड । समस्या यह है कि मैं इंतज़ार कर रहा टेबल इस तरह के 100 के है ......
agg <- aggregate(x = agg[, 2:ncol(agg)], by = list(ID = agg$ID), FUN = "mean", na.rm = T)
तो मैं इसे एक data.table में बदला जाएगा और डेटा तालिका विधि चलाते हैं।
Error: cannot allocate vector of size 144 Kb
In addition: Warning messages:
1: Reached total allocation of 1535Mb: see help(memory.size)
2: Reached total allocation of 1535Mb: see help(memory.size)
सुनिश्चित नहीं हैं कि क्या गलत है:
dt <- as.data.table(agg)
setkey(dt, ID)
dt2 <- dt[,lapply(list(dt[2:ncol(dt)]),mean),by = ID]
लेकिन कुछ ही मिनटों के बाद एक त्रुटि संदेश मिला। डीटी के "सिर" भाग को देखने के लिए डीटी [1: 5,1: 5] का उपयोग नहीं कर सकते हैं, और सिर (डीटी) छत के माध्यम से चलने वाली कई रेखाएं लौटाता है, मैं या तो "सिर" नहीं देख सकता। पता नहीं अब क्या करना है।
मैं आईडी को एक कॉलम (डेटा.फ्रेम में) में सूचीबद्ध कर सकता हूं या तालिका को ट्रांसफर कर सकता हूं और आईडी को पहली पंक्ति में (डेटाटेबल में) सूचीबद्ध कर सकता हूं। किसी भी तरह से, डेटा एकत्र करने के लिए कोई तेज तरीका है? बहुत ज्यादा अधिमूल्यित!
पहला प्रश्न एह? स्वागत हे। क्या आप वास्तव में 'data.table' पैकेज में डेटा.table का मतलब है? यदि आपने 'ट्रांसफर' और 'समेकित' करने का प्रयास किया है तो आपके द्वारा किए गए सटीक आदेश प्रदान करना सबसे अच्छा है ताकि लोग सहायता कर सकें। 'डेटा.table विधि' से आपका क्या मतलब है इसका कोई मतलब नहीं है। स्टैक ओवरफ़्लो पर कहीं अच्छे प्रश्न पूछने के लिए शायद कुछ दिशानिर्देश हैं (लेकिन मैं उन्हें जल्दी नहीं कर सकता)। सलाह मांगने के लिए आर चैट रूम आज़माएं। –
क्षमा करें यह स्पष्ट नहीं था। मैंने इसे अधिक जानकारी प्रदान करने के लिए संपादित किया है। उम्मीद है कि अब यह और अधिक समझ में आता है। – user1444754
बहुत बेहतर, धन्यवाद। इसने जवाब देने में बहुत जल्दी बना दिया। –