您好,我正在合并从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