2016-12-22 149 views
0

単一の日付範囲にわたって複数の証券の履歴データを取得しようとしています。私は以下のコードを使用して必要なデータを取得することができますが、結果のリストはすべてのセキュリティの日付列を生成します。最初の一番左の列に日付を、そしてリストの各セキュリティのセキュリティフィールドデータ(px_lastなど)を右の列に表示したいと考えています。Rblpapi:BDHを使用して1つの日付列で複数の証券の履歴データを取得する

$`SPX Index` 
     date px_last 
1 2016-12-19 2262.53 
2 2016-12-20 2270.76 
3 2016-12-21 2265.18 
4 2016-12-22 2261.03 

$`SX5E Index` 
     date px_last 
1 2016-12-19 3257.85 
2 2016-12-20 3279.41 
3 2016-12-21 3270.75 
4 2016-12-22 3262.11 

sec <- c("SPX Index","SX5E Index") 
lb <- 5 
startdate <- Sys.Date() - lb 
opt <- c("periodicitySelection"="DAILY","nonTradingDayFillOption"="NON_TRADING_WEEKDAYS","nonTradingDayFillMethod"="PREVIOUS_VALUE") 
dat <- bdh(sec,fields="px_last",start.date = startdate,options=opt) 

戻り、私は日付フィールドを非表示にするオーバーライド(DTS = H)を使用することができます優れたが、私は私のリストにある一番左の列は日付を移入したいと私はBBGに知っています

4つではなく3つの列が必要です。 Col1は日付、Col2はSPXインデックスpx_last、Col3はSX5Eインデックスpx_lastです。ありがとうございました

答えて

1

後で手でマージしてください。あなたのコードをやり直すことにより、

スタート:

R> library(Rblpapi) 
Rblpapi version 0.3.5 using Blpapi headers 3.8.8.1 and run-time 3.8.8.1. 
Please respect the Bloomberg licensing agreement and terms of service. 
R> library(xts) 
Loading required package: zoo 

Attaching package: ‘zoo’ 

The following objects are masked from ‘package:base’: 

    as.Date, as.Date.numeric 

R> sec <- c("SPX Index","SX5E Index") 
R> lb <- 5  
R> startdate <- Sys.Date() - lb 
R> opt <- c("periodicitySelection"="DAILY", 
+   "nonTradingDayFillOption"="NON_TRADING_WEEKDAYS", 
+   "nonTradingDayFillMethod"="PREVIOUS_VALUE") 
R> dat <- bdh(sec,fields="px_last",start.date = startdate,options=opt) 
R> str(dat)   
List of 2 
    $ SPX Index :'data.frame':  5 obs. of 2 variables: 
    ..$ date : Date[1:4], format: "2016-12-26" "2016-12-27" "2016-12-28" ... 
    ..$ px_last: num [1:5] 2264 2269 2250 2249 2239 
    $ SX5E Index:'data.frame':  5 obs. of 2 variables: 
    ..$ date : Date[1:4], format: "2016-12-26" "2016-12-27" "2016-12-28" ... 
    ..$ px_last: num [1:5] 3274 3279 3279 3272 3291 
R> 

は、我々はdata.frameタイプのリストを持っていることがわかります。 xtsオブジェクトのリスト(上記のパッケージをロードした理由)を作成し、リスト要素をマージして列名を設定します:

R> datxts <- lapply(dat, function(d) xts(d[,-1], order.by=as.Date(d[,1]))) 
R> res <- do.call(merge, datxts) 
R> colnames(res) <- sec 
R> res 
      SPX Index SX5E Index 
2016-12-26 2263.79 3273.97 
2016-12-27 2268.88 3278.53 
2016-12-28 2249.92 3278.72 
2016-12-29 2249.26 3271.76 
2016-12-30 2238.83 3290.52 
R> 
関連する問題