Rblpapi: Использование BDH для извлечения исторических данных по нескольким ценным бумагам только с одним столбцом даты
Я пытаюсь получить исторические данные для нескольких ценных бумаг за один диапазон дат. Я могу получить данные, которые я хочу, используя приведенный ниже код, но результирующий список создает столбец даты для каждой ценной бумаги. Я хотел бы видеть дату в первом, самом левом столбце, а затем данные поля безопасности (px_last и т. Д.) Для каждой защиты в моем списке в столбцах справа. Я знаю, что в BBG с Excel я могу использовать переопределение (dts = H), чтобы скрыть поле даты, но я хочу, чтобы самый левый столбец в моем списке заполнял дату,
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)
Возвращает:
$`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
Я хотел бы видеть три столбца вместо четырех. 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>