2016-12-22 4 views
0

단일 기간 동안 여러 증권에 대한 과거 데이터를 가져 오려고합니다. 아래 코드를 사용하여 원하는 데이터를 얻을 수 있지만 결과 목록은 모든 보안에 대해 날짜 열을 생성합니다. 첫 번째 가장 왼쪽 열에서 날짜를보고 내 목록의 모든 보안에 대한 보안 필드 데이터 (px_last 등)를 오른쪽 열에 표시하고 싶습니다.Rblpapi : BDH를 사용하여 하나의 날짜 열이있는 여러 증권에 대한 과거 데이터를 가져옵니다.

$`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>