दिलचस्प पोस्ट
एंड्रॉइड ग्रेडिंग प्लगइन 0.10.0 या उससे अधिक का उपयोग करते हुए मैं एक जॅकोको कवरेज रिपोर्ट कैसे प्राप्त करूं? पायथन में और __eq__ को कैसे नियंत्रित किया जाता है? लंबे डबल बनाम डबल ओब्बुस्केटेड कोड में स्ट्रिंग छुपाना क्या LINQ क्वेरी में ToList () या ToArray () को कॉल करना बेहतर है? कंसोल आउटपुट को एक txt फ़ाइल में कैसे लिखें बाइट को अपनी बाइनरी स्ट्रिंग का प्रतिनिधित्व करने के लिए कैसे परिवर्तित करें सी # सूची <स्ट्रिंग> सीमांकक के साथ स्ट्रिंग करने के लिए WPF: गतिशील रूप से निर्मित WPF विंडो में गतिशील रूप से नियंत्रण कैसे जोड़ें एंड्रॉइड स्टूडियो ग्रैडल आइकन त्रुटि, मैनिफेस्ट विलय संख्या का वर्ग #define का उपयोग करके परिभाषित किया जा रहा है जावा विभाजन () विधि अंत में खाली तार स्ट्रिप्स? कंसोल में ASCII का प्रयोग करके मैं तालिका कैसे बना सकता हूं? क्या कोई एमडी 5 फिक्स्ड प्वाइंट है जहां एमडी 5 (एक्स) == एक्स? Bitfields में क्यों एक बिट endianness मुद्दा है?

कई डेटा.फ्रेम को एक डेटा.फ्रेम में एक लूप के साथ मिलाएं

मैं कई data.frames को एक data.frame में merge करने का प्रयास कर रहा data.frame । चूंकि मेरे पास फ़ाइलों की पूरी सूची है I इसे एक लूप संरचना के साथ करने की कोशिश कर रहा हूं I

अब तक लूप का तरीका ठीक काम करता है। हालांकि, यह काफी अक्षम दिख रहा है और मैं सोच रहा हूं कि क्या एक तेज़ और आसान तरीका है

यहाँ परिदृश्य है: मेरे पास कई .csv फ़ाइलों के साथ एक निर्देशिका है प्रत्येक फ़ाइल में एक ही पहचानकर्ता होता है जिसका उपयोग विलय चर के रूप में किया जा सकता है। चूंकि फाइलें आकार में बड़ी थी इसलिए मैंने एक बार में सभी फाइलों को पढ़ने के बजाय प्रत्येक फाइल को आर में एक बार पढ़ा। इसलिए मुझे list.files साथ निर्देशिका की सभी फाइलें list.files और पहले दो फाइलों में पढ़ी जाती हैं। बाद में मैं एक data.frame प्राप्त करने के लिए merge का उपयोग करता data.framedata.frame

 FileNames <- list.files(path=".../tempDataFolder/") FirstFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[1], sep=""), header=T, na.strings="NULL") SecondFile <- read.csv(file=paste(".../tempDataFolder/", FileNames[2], sep=""), header=T, na.strings="NULL") dataMerge <- merge(FirstFile, SecondFile, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"), all=T) 

अब मैं लूप का उपयोग शेष data.frame फाइलों को पाने के for हूं और उन्हें पहले से मौजूद data.frame में भी merge कर देता data.frame :

 for(i in 3:length(FileNames)){ ReadInMerge <- read.csv(file=paste(".../tempDataFolder/", FileNames[i], sep=""), header=T, na.strings="NULL") dataMerge <- merge(dataMerge, ReadInMerge, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"), all=T) } 

यद्यपि यह सिर्फ ठीक काम करता है, मैं सोच रहा था कि नौकरी पाने का एक और शानदार तरीका है?

वेब के समाधान से एकत्रित समाधान "कई डेटा.फ्रेम को एक डेटा.फ्रेम में एक लूप के साथ मिलाएं"

आप स्टैक ओवरफ्लो पर बारीकी से संबंधित प्रश्न देखना चाह सकते हैं

मैं इसे दो चरणों में plyr : सभी डेटा को आयात करें ( plyr साथ), फिर इसे एक साथ मर्ज करें:

 filenames <- list.files(path=".../tempDataFolder/", full.names=TRUE) library(plyr) import.list <- llply(filenames, read.csv) 

इससे आपको उन सभी फाइलों की एक सूची दी जाएगी जिनकी आपको एक साथ विलय करने की आवश्यकता है। ऐसा करने के कई तरीके हैं, लेकिन यह एक दृष्टिकोण है ( Reduce साथ):

 data <- Reduce(function(x, y) merge(x, y, all=T, by=c("COUNTRYNAME", "COUNTRYCODE", "Year")), import.list, accumulate=F) 

वैकल्पिक रूप से, यदि आप Reduce साथ आराम से नहीं हैं तो आप इसे reshape पैकेज के साथ कर सकते हैं:

 library(reshape) data <- merge_recurse(import.list) 

अगर मैं गलत नहीं हूं, तो एक बहुत ही सरल बदलाव 3:length(FileNames) क्लॉज को समाप्त कर सकता है:

 FileNames <- list.files(path=".../tempDataFolder/", full.names=TRUE) dataMerge <- data.frame() for(f in FileNames){ ReadInMerge <- read.csv(file=f, header=T, na.strings="NULL") dataMerge <- merge(dataMerge, ReadInMerge, by=c("COUNTRYNAME", "COUNTRYCODE", "Year"), all=T) }