我正在努力想出一个 R 脚本来读取多个股票价格 (OHLCV) cvs 文件,并且只选择 Close 列,然后合并到单个矩阵 xts 时间序列中,其中包含每只股票的 colnames 和 Close 价格系列的列。我设法 sapply 循环每个文件名向量,但结果矩阵似乎只有一个单列的错误维度,每个 Close 价格列表都附加,而不是 ecpected 多列矩阵,有什么建议吗?非常感谢。
将 .csv 文件转换为 RData:
filenames <- list.files(path="/data/stockdata/", pattern=".*csv")
names <-substr(filenames,1,8)
for(i in names){
filepath <- file.path("/data/stockdata/",paste(i,".csv",sep=""))
assign(i, i<-read.csv(filepath, sep = ",",dec="."))
i<-xts((as.matrix(i[,-1])),(as.POSIXct(paste(i[,1]),"%y/%m/%d")))
colnames(i) <- c('Open','High','Low','Close','Volume','Adjusted')
save(i,file = filepath)
}
以下是我尝试将所有收盘价合并到一个矩阵中的内容:
filenames <- list.files(path="/data/stockdata/",pattern=".*")
stocknames<-as.vector(substr(filenames,1,8))
mergeclose = function(f) {
# read different stocks and take the Close price into a merged array
fullpath<-paste("/data/stockdata/",f,".RData",sep="")
load(fullpath)
assign(f,f<-i[,4])
cbind(f)
}
allstocks_close <- sapply(stocknames, mergeclose)
生成的矩阵如下所示:
StockA
2013.07.01 12.2
....
StockB
2013.07.01 13.3
而我的意图是:
StockA StockB
2013.07.01 12.2 13.3