如何通过匹配日期列来汇总两个数据框?

Posted

技术标签:

【中文标题】如何通过匹配日期列来汇总两个数据框?【英文标题】:How to summarize two data frames by matching date columns? 【发布时间】:2021-12-29 22:56:31 【问题描述】:

我有两个数据框:Original 和 Base……

Original<- data.frame(Bond = c("A","B","C","D"),Date = c("19-11-2021","19-11-2021","19-11-2021","17-11-2021"),
                  Rate =c("O_11","O_12","O_13","O_31"))

base<- data.frame(Date = c("19-11-2021","18-11-2021","17-11-2021"), Rate =c("B_1","B_2","B_3"))

在这里,我想计算每个日期 w.r.t 的每个债券的原始和基础之间的利率差异。基准利率。输出应采用以下格式 -

注意: 原始数据框包含原始汇率和基准汇率的数值

我尝试使用group_by(),但无法继续进行。请帮我解决一下这个。即使是建议也会起作用

【问题讨论】:

【参考方案1】:

似乎您想加入日期,使用 dplyr 您可以使用 inner_join,假设原始中的每条记录都存在一个日期:

Output <- Original %>%
  inner_join(base, by="Date") %>%
  mutate(Rate_Diff = paste0(Rate.x,"-",Rate.y), Rate=Rate.x) %>%
  select(-Rate.x, -Rate.y)

> Output
  Bond       Date Rate_Diff Rate
1    A 19-11-2021  O_11-B_1 O_11
2    B 19-11-2021  O_12-B_1 O_12
3    C 19-11-2021  O_13-B_1 O_13
4    D 17-11-2021  O_31-B_3 O_31

编辑:现在看到注释,然后您可以将 paste0 函数替换为实际列:

 mutate(Rate_Diff = Rate.x - Rate.y, Rate=Rate.x)

【讨论】:

以上是关于如何通过匹配日期列来汇总两个数据框?的主要内容,如果未能解决你的问题,请参考以下文章

仅结合年月列来制作日期熊猫

根据最接近的日期时间合并两个数据框

查找大型数据集中的两个日期之间是不是有假期?

如何从两个数组集中“检查”匹配的日期

pd.DataFrame.join 不断排序

如何通过使用数据框中的其他列来聚合熊猫数据框中的列