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

R语言如何按日期和国家双条件合并DataFrame获取对应收益率

解决方案

核心逻辑:你当前的DF2是宽表结构,需要先把它转换为长表结构,之后就可以通过日期、国家两个字段和DF1直接匹配,就能拿到对应国家对应日期的收益率。


方法1:tidyverse方案(推荐,可读性和扩展性更强)

library(dplyr)
library(tidyr)

# 第一步:把DF2(market表)从宽表转成长表,国家列名转为Country字段,收益率转为Return字段
market_long <- market %>%
  pivot_longer(cols = c(US, CA), names_to = "Country", values_to = "Return")

# 第二步:按日期、国家两个字段匹配合并
result <- stocks %>%
  left_join(market_long, by = c("date", "Country"))

如果后续要新增其他国家的收益率,只需要在pivot_longer的cols参数里添加对应国家代码即可,不需要修改其他逻辑。


方法2:base R方案(无需额外加载依赖包)

# 先匹配到DF1每行日期对应DF2的行位置
market_row_idx <- match(stocks$date, market$date)
# 按国家取值填充Return列
stocks$Return <- ifelse(
  stocks$Country == "US", 
  market$US[market_row_idx], 
  market$CA[market_row_idx]
)

内容的提问来源于stack exchange,提问作者thomas.diridondo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:27:03