R语言如何筛选数据框中距当前日期最近的4个日期对应行
R筛选最新4个日期对应记录的实现方案
核心操作逻辑:
- 先将字符串格式的日期列转换为R标准
Date类型,避免字符串字典序排序导致的日期顺序错误 - 提取数据集中所有不重复的日期,按时间倒序排列后取前4个,即为最新的4个日期
- 筛选原数据集中日期匹配上述4个日期的所有行即可
基础R实现(无需安装额外包)
# 加载你的数据框到df变量后执行以下操作 # 转换Week列为日期格式,月/日/年对应的格式串为"%m/%d/%Y" df$Week <- as.Date(df$Week, format = "%m/%d/%Y") # 取去重后倒序排列的前4个最新日期 top4_latest <- sort(unique(df$Week), decreasing = TRUE)[1:4] # 子集筛选得到结果 filtered_df <- df[df$Week %in% top4_latest, ]
运行后filtered_df存储的就是目标结果,对应给出的示例数据,会保留2022-05-15、2022-05-22、2022-05-29、2022-06-05四个日期的所有记录,和预期完全一致。
dplyr实现(tidyverse生态写法)
如果你日常使用dplyr做数据处理,可以用以下链式写法:
library(dplyr) filtered_df <- df %>% mutate(Week = as.Date(Week, format = "%m/%d/%Y")) %>% filter(Week %in% sort(unique(Week), decreasing = TRUE)[1:4])
补充说明:如果需要严格匹配「距离系统当前日期
Sys.Date()最近」而非「数据集内最新的4个日期」,只需要在筛选日期前先过滤掉晚于当前系统日期的异常值即可,其余逻辑保持不变。
内容的提问来源于stack exchange,提问作者Jacob Nordstrom
相关产品推荐
相关产品推荐

