r - 使用 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 做到这一点?
解决方案
在这里,我们可以使用filter_at
library(dplyr)
data %>%
filter_at(vars(matches('^d\\d+$')), all_vars(Date != .))
推荐阅读
- macos - 项目转移到 Macbook 时出现会话错误
- hibernate - 使用@Query 进行休眠 jpa 投影
- google-cloud-platform - GCE:永久启动磁盘
- amazon-web-services - 列出每个 Cognito 用户
- python - 如何将一个常规格式的字符串列拆分为 Pandas 中的多个列
- python - 使用python在excel中创建和保存数据新表
- video - 使用 VLC 将视频流从相机写入文件
- php - processDatamap_beforeStart Hook - 获取 TYPO3 中的实际 UID
- python - 包含 for 循环的 Python 函数仅返回最后一个结果
- html - 页面链接在域的角度构建中不起作用