您好,我正在合併從NSE Bhavcopy下載的csv。不同的日期有不同的cols。說26-12-2006它有998行& 27-12-2006它有1003行。它有8列。我做cbind創建一個&乙只有2色,符號,收盤價。我使用colnames命名col,以便合併我可以通過SYMBOL進行合併。合併多個csv在R
問題:
1)當我使用與由= 「SYMBOL」 合併功能,所有= F;我很驚訝地看到結果c有1011行。在我讀過的地方,與所有= F合併,它應該變成998行或最大1003行。我還分析了這些數據,發現在26-12-2006中有3種不同的符號在27-12-2006 &中有5個不同的符號。所以當我們通過「SYMBOL」合併時,兩個行中的新符號會被添加?或者它只會與先前存在的行合併?
2)NSEmerg是一個函數,它使用for循環讀取新文件,每次&與現有的c文件合併。我有大約1535個文件,其數據來自2006年12月至2013年4月。但是我無法合併超過12個文件,因爲它引發錯誤向量大小爲12 MB,因此無法允許。它還顯示警告消息,說1535 MB的內存分配用完了。同樣在第12個文件中,我發現c的nrow是1508095,意味着無限循環運行。在所有的1535份文件中,最高排在1435.即使我們加入所有已退市的股票,沒有在特定日期交易,我相信它可能不會跨越2200個股票。爲什麼這顯示150萬的黑暗?
3)有什麼更好的方式合併csv?我第一次在堆棧溢出,我會附加說10個文件。
代碼:
a <- read.csv("C://Users/home/desktop/061226.csv", stringsAsFactors = F, header = T)
b <- read.csv("C://Users/home/desktop/061227.csv", stringsAsFactors = F, header = T)
a_date <- a[2,1]
b_date <- b[2,1]
a <- cbind(a[,2],a[,6])
b <- cbind(b[,2], b[,6])
colnames(a) <- c("SYMBOL", a_date)
colnames(b) <- c("SYMBOL", b_date)
c <- merge(a,b,by = "SYMBOL", all = F)
NSEmerg <- function(x,y) {
y_date <- y[2,1]
y <- cbind(y[,2], y[,6])
colnames(y) <- c("SYMBOL", y_date)
c <- merge(c, y, by = "SYMBOL", all = F)
}
filenames = list.files(path = "C:/Users/home/Documents/Rest data", pattern = "*csv")
for (i in 1:length(filenames)){
y <- read.csv(filenames[i], header = T, stringsAsFactors = F)
c <- NSEmerg(c,y)
}
write.csv(c, file = "NSE.csv")
我對PERL沒有任何線索,早些時候當我粘貼引用它拋出錯誤說PERL不可用;你能給我準確的語法嗎?說我有文件130425.csv,130423.csv,130422.csv;如何用3個文件在perl中創建一個新文件?所有這3個文件只在工作目錄中。當我輸入你的代碼時,它給我一個錯誤,說perl -pe1 130425中出現意外的數字常量。對不起,我對編碼非常陌生&R – planetpb 2013-04-26 20:49:29