मैं एक data.frame
में merge
कई data.frames
कोशिश कर रहा हूँ के साथ एक data.frame में कई data.frames मर्ज करें। चूंकि मेरे पास फाइलों की पूरी सूची है, इसलिए मैं इसे लूप संरचना के साथ करने की कोशिश कर रहा हूं।एक पाश
अब तक पाश दृष्टिकोण ठीक काम करता है। हालांकि, यह बहुत अक्षम दिखता है और मैं सोच रहा हूं कि कोई तेज और आसान दृष्टिकोण है या नहीं।
यहां परिदृश्य है: मेरे पास .csv
फ़ाइलों के साथ एक निर्देशिका है। प्रत्येक फ़ाइल में एक ही पहचानकर्ता होता है जिसे विलय चर के रूप में उपयोग किया जा सकता है। चूंकि फाइल आकार में बड़ी हैं, इसलिए मैंने एक ही समय में सभी फाइलों को पढ़ने के बजाय प्रत्येक फाइल को आर में पढ़ने के लिए सोचा था। तो मुझे list.files
के साथ निर्देशिका की सभी फाइलें मिलती हैं और पहले दो फाइलों में पढ़ी जाती हैं। बाद में मैं एक data.frame
प्राप्त करने के लिए merge
का उपयोग करता हूं।
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)
अब मैं और में एक for
पाश का उपयोग सभी शेष .csv
फ़ाइलें पाने के लिए उन्हें 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)
}
भले ही यह ठीक है, अगर वहाँ एक और अधिक मैं सोच रहा था काम करता है नौकरी पाने के लिए सुरुचिपूर्ण तरीका?
यह देख लायक आप पूरे वें प्राप्त कर सकते हैं कि हो सकता है: यदि मैं गलत नहीं हूँ, एक बहुत सरल परिवर्तन
3:length(FileNames)
kludge को समाप्त कर सकता 'lplyply' के बजाय' ldply' को कॉल करके फ़ाइल नाम वाले अतिरिक्त '.id' कॉलम के साथ विलय कर दिया गया। 'घटाएं' या 'विलय' कॉल तब अनियंत्रित है। – CharlesB