複数の株価 (OHLCV) cvs ファイルを読み取り、終値列のみを取得して、各株式の列名と終値シリーズの列を持つ単一の行列 xts 時系列にマージする R スクリプトを考え出すのに苦労しています。各ファイル名ベクトルをループするために sapply を試してみましたが、結果のマトリックスは、予想される複数列マトリックスではなく、各終値リストが追加された 1 つの列だけの間違った次元にあるようです。何か提案はありますか? どうもありがとう。
.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