r - 将两个数据框连接在一起,并使用最近的结果作为添加的行
问题描述
我正在尝试实现如下所示的“Final.Data”输出。
我们从参考数据开始,我想添加“Add.Data”,但加入“Person”并返回参考(日期)之前的最新结果。
我在 r 中寻找 dplyr、data.table 或 sql 解决方案。
然后,我希望能够为 1000 个条目重现此内容,因此寻找一个合理有效的解决方案。
library(tibble)
Reference.Data <- tibble(Person = "John",
Date = "2019-07-10")
Add.Data <- tibble(Person = "John",
Order.Date = c("2019-07-09","2019-07-08") ,
Order = 1:2)
Final.Data <- tibble(Person = "John",
Date = "2019-07-10",
Order.Date = "2019-07-09",
Order = 1)
解决方案
到最近的日期之前的滚动连接应该工作得很快..
#data preparation:
# convert to data.tables, set dates as 'real' dates
DT1 <- setDT(Reference.Data)[, Date := as.IDate( Date )]
DT2 <- setDT(Add.Data)[, Order.Date := as.IDate( Order.Date )]
#set keys (this also orders the dates, convenient for the join later)
setkey(DT1, Person, Date)
setkey(DT2, Person, Order.Date)
#perform rolling update join on DT1
DT1[ DT2, `:=`( Order.date = i.Order.Date, Order = i.Order), roll = -Inf][]
# Person Date Order.date Order
# 1: John 2019-07-10 2019-07-09 1
推荐阅读
- c++ - 带有等式语句的 C++ 三元运算符
- tensorflow - 从背景噪声中检测不同的标签
- python - Pandas 列中特定值的滚动计数频率
- apache-spark - 使用pyspark将两个字符串列值连接到整数数组
- python - 将 Dash Plotly 表中的数据发送到 python 函数
- java - Spring Boot jar 文件可重用(本地 maven 存储库)
- python - 如何更改 Tkinter 按钮颜色
- java - 二进制 XML 文件第 13 行:二进制 XML 文件第 13 行:膨胀类错误
- flutter - 如何使用芯片创建可滚动的 listView
- postgresql - 我正在尝试使用 CloudFormation 创建 Postgres DB