You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言中筛选多日期列匹配指定列的数据行?

问题解决方案

原始数据集

首先加载你的数据集:

Name <- c("Jon", "Bill", "Maria", "Ben", "Tina")
Age <- c(23, 41, 32, 58, 26)
datesurg<-c("2022-03-17","2022-02-20","2022-01-23","2022-03-18","2022-04-17")
dateevent<-c("2022-03-20","2022-02-21","2022-03-17","2022-03-18","2022-04-17")
datelookup<-c("2022-03-20","2022-02-20","2022-01-23","2022-03-18","2022-04-17")

df <- data.frame(Name, Age,datesurg,dateevent,datelookup)

需求1:保留datesurg与datelookup中任意日期匹配的行

使用%in%操作符筛选,判断datesurg的值是否存在于datelookup的所有值中:

# Base R 方法
df_filter1 <- df[df$datesurg %in% df$datelookup, ]

# dplyr 方法(需先加载dplyr包)
# library(dplyr)
# df_filter1 <- df %>% filter(datesurg %in% datelookup)

运行后结果如下:

Name Age   datesurg  dateevent datelookup
2  Bill  41 2022-02-20 2022-02-21 2022-02-20
3 Maria  32 2022-01-23 2022-03-17 2022-01-23
4   Ben  58 2022-03-18 2022-03-18 2022-03-18
5  Tina  26 2022-04-17 2022-04-17 2022-04-17

需求2:保留datesurg或dateevent等于对应行datelookup的行

使用逻辑或|判断每行的两个条件,满足其一即可保留:

# Base R 方法
df_filter2 <- df[df$datesurg == df$datelookup | df$dateevent == df$datelookup, ]

# dplyr 方法
# df_filter2 <- df %>% filter(datesurg == datelookup | dateevent == datelookup)

运行结果如下:

Name Age   datesurg  dateevent datelookup
1   Jon  23 2022-03-17 2022-03-20 2022-03-20
2  Bill  41 2022-02-20 2022-02-21 2022-02-20
3 Maria  32 2022-01-23 2022-03-17 2022-01-23
4   Ben  58 2022-03-18 2022-03-18 2022-03-18
5  Tina  26 2022-04-17 2022-04-17 2022-04-17

内容的提问来源于stack exchange,提问作者Mark

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 13:55:23