You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将嵌套列表转换为R DataFrame以构建无风险收益率曲线

解决方案:将嵌套列表转换为宽格式无风险收益率曲线DataFrame

针对你从Bloomberg加载的嵌套列表数据,我们可以通过数据清理、合并、重塑三个步骤得到你需要的宽格式DataFrame。以下是具体实现:

步骤1:清理空数据

首先过滤掉列表中那些空的data.frame(就是命名为NA且行数为0的元素),这些数据没有实际价值:

# 过滤空data.frame,只保留有数据的条目
filtered_rf <- Filter(function(x) nrow(x) > 0, rf_curves$GBP)

步骤2:为每个数据集添加ticker标识

给每个非空的data.frame添加ticker列,值为对应的列表名称(同时清理掉Bloomberg的后缀如Index或CMPN Curncy):

# 为每个df添加ticker列并清理名称
named_dfs <- Map(function(df, ticker_name) {
  # 去掉ticker名称中的冗余后缀
  clean_ticker <- gsub(" Index| CMPN Curncy", "", ticker_name)
  df$ticker <- clean_ticker
  df
}, filtered_rf, names(filtered_rf))

步骤3:合并并重塑为宽格式

先将所有data.frame合并成一个长格式数据集,再转换为你需要的宽格式(行=date,列=ticker,值=px_last):

# 加载tidyverse工具包(如果没安装先运行install.packages("tidyverse"))
library(tidyverse)

# 合并成长格式df
long_format <- bind_rows(named_dfs)

# 转换为宽格式
wide_rf_curve <- long_format %>%
  pivot_wider(
    id_cols = date,          # 行标识符:日期
    names_from = ticker,     # 列标识符:ticker
    values_from = px_last    # 填充值:收益率
  )

最终结果示例

运行后你会得到类似这样的DataFrame(自动用NA填充不同ticker间的日期缺失值):

date BP0012M BP0003M BP0006M BPSW30 BPSW8 BPSW1F BPSW9
1 2018-05-21 0.92894 0.62281 0.74630  1.758 1.5675  0.942 1.6115
2 2018-05-22 0.93081 0.62250 0.74323  1.768 1.5955  0.9575 1.6395
3 2018-05-23 0.91831 0.61900 0.73411  1.715 1.5375  0.9225 1.5795
4 2018-05-24 0.91820 0.61406 0.73321  1.696 1.5175  0.9188 1.5585
5 2018-05-25 0.90056 0.61067 0.72312  1.628 1.4475  0.8864 1.4885
6 2018-05-29      NA      NA      NA  1.531  1.342 0.84505  1.381
7 2018-05-30      NA      NA      NA 1.56725 1.37775   0.863  1.419

额外提示

如果你用Rblpapi加载数据时想直接获取宽格式,可以在bdh()函数中调整参数,比如:

# 直接请求宽格式数据(示例)
library(Rblpapi)
conn <- blpConnect()

tickers <- c("BP0012M Index", "BP0003M Index", "BP0006M Index")
fields <- "PX_LAST"
start_date <- as.Date("2018-05-21")

# 直接得到宽格式结果
wide_data <- bdh(conn, tickers, fields, start.date = start_date)
blpDisconnect(conn)

内容的提问来源于stack exchange,提问作者jacob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:25:47