首页 > 解决方案 > 使用 dplyr 在 R 中排除 28 个不同月份的子数据框

问题描述

我有一个数据框,包含从 2004 年 1 月 1 日开始到 2019 年 12 月 1 日结束的月度交易量。我需要应用一个过滤器来删除等于某些日期的行。我的问题是我需要过滤掉 28 个日期并且它们不是连续的。我现在拥有的东西有效,但效率不高。我正在使用 dplyr 的过滤功能。

我目前有 28 个变量 d1-d28,它们是我想要过滤掉的日期,然后我使用

df<-data%>%dplyr::filter(Date!=d1 & Date!=d2 & Date!=d3 .......Date!=d28)

我想将感兴趣的日期 d1-d28 放入 data.frame 并在我的过滤器代码中引用 data.frame。

我试过了:

df<-data%>%dplyr::filter(!Date %in% DateFilter) 

其中 DateFilter 是一个 data.frame,其中包含 1 列和 28 行我想要过滤的日期,但我收到一个错误,它说对象的长度不匹配。

有什么办法可以用 dplyr 做到这一点?

标签: rfilterdplyr

解决方案


在这里,我们可以使用filter_at

library(dplyr)
data %>%
      filter_at(vars(matches('^d\\d+$')), all_vars(Date != .))

推荐阅读