r - 子集数据框,其中日期在 R 中日期向量的 x 天内

标签 r date dataframe subset

我有一个日期向量,例如

dates <- c('2013-01-01', '2013-04-02', '2013-06-10', '2013-09-30')

以及包含日期列的数据框,例如
df <- data.frame(
                'date' = c('2013-01-04', '2013-01-22', '2013-10-01', '2013-10-10'),
                'a'    = c(1,2,3,4),
                'b'    = c('a', 'b', 'c', 'd')
                )

我想对数据框进行子集化,以便它只包含日期在“日期”向量中的任何日期之后不到 5 天的行。

即初始数据框看起来像这样
date       a b 
2013-01-04 1 a
2013-01-22 2 b
2013-10-01 3 c
2013-10-10 4 d

查询后,我只剩下第一行和第三行(因为 2013-01-04 是 2013-01-01 的 5 天之内,2013-10-01 是 2013-09-30 的 5 天之内)

有谁知道做到这一点的最佳方法?

提前致谢

最佳答案

使用 data.table 很容易(而且非常快)做到这一点。卷:

library(data.table)
dt = data.table(df)

# convert to Date (or IDate) to have numbers instead of strings for dates
# also set the key for dates for the join
dt[, date := as.Date(date)]
dates = data.table(date = as.Date(dates), key = 'date')

# join with a roll of 5 days, throwing out dates that don't match
dates[dt, roll = 5, nomatch = 0]
#         date a b
#1: 2013-01-04 1 a
#2: 2013-10-01 3 c

关于r - 子集数据框,其中日期在 R 中日期向量的 x 天内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19229079/

相关文章:

c - PROTECT 到底应该包裹什么?

r - 向量化插入元素

r - 使用特定列表对数据帧 R 中的变量进行分组

php - 从 1 天前过期的 MYSQL 表中获取所有项目

python - 如何将 json 解析为 Pandas 数据框

r - data.table:用矩阵更新 data.table 中的多列

php - 如何按星期几获取最接近的日期?

java - 在Java中为24小时时间添加冒号?

python-3.x - 如何用其他内容替换数据帧列的每个 "elements"的一部分

python - Pandas:计算数据帧每列的一组n个值的平均值