如何在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
相关产品推荐
相关产品推荐

