gpt4 book ai didi

r - 在确切日期加入 data.table 或者如果不是最近的小于日期的情况

转载 作者:行者123 更新时间:2023-12-04 09:07:13 24 4
gpt4 key购买 nike

我要加入两个data.table s 使用日期作为连接。

嗯,有时我没有完全匹配,在这种情况下,我想找到最近的较少日期。我的问题与这篇关于 SQL 的帖子非常相似:
SQL Join on Nearest less than date

我知道 data.table语法类似于 SQL,但我无法对此进行编码。什么是正确的语法?

一个简化的例子:

Dt1 
date x
1/26/2010 - 10
1/25/2010 - 9
1/24/2010 - 9
1/22/2010 - 7
1/19/2010 - 11

Dt2
date
1/26/2010
1/23/2010
1/20/2010

输出
   date     x
1/26/2010 - 10
1/23/2010 - 7
1/20/2010 - 11

先感谢您。

最佳答案

干得好:

library(data.table)

创建数据:
Dt1 <- read.table(text="
date x
1/26/2010, 10
1/25/2010, 9
1/24/2010, 9
1/22/2010, 7
1/19/2010, 11", header=TRUE, stringsAsFactors=FALSE)

Dt2 <- read.table(text="
date
1/26/2010
1/23/2010
1/20/2010", header=TRUE, stringsAsFactors=FALSE)

转换为 data.table ,将字符串转换为日期,并设置 data.table key :
Dt1 <- data.table(Dt1)
Dt2 <- data.table(Dt2)

Dt1[, date:=as.Date(date, format=("%m/%d/%Y"))]
Dt2[, date:=as.Date(date, format=("%m/%d/%Y"))]

setkey(Dt1, date)
setkey(Dt2, date)

使用 roll=TRUE 连接表:
Dt1[Dt2, roll=TRUE]

date x
[1,] 2010-01-20 11
[2,] 2010-01-23 7
[3,] 2010-01-26 10

关于r - 在确切日期加入 data.table 或者如果不是最近的小于日期的情况,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11341557/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com