1

複数の株価 (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
4

0 に答える 0