r - 如何使用 R 按行值范围过滤数据帧?
问题描述
我有一个以下数据框,我想过滤仅包含从 2019-06-01 到 2019-06-30 的值的数据框
ds yhat
1 2015-01-01 -100
2 2015-01-02 250
3 2015-01-03 50
4 … 60
5 2019-06-30 370
解决方案
三种方法,取决于您选择的 R 生态系统:
### base R
subset(dat, as.Date("2019-06-01") <= ds & ds <= as.Date("2019-06-30"))
# ds yhat
# 5 2019-06-30 370
### tidyverse
library(dplyr)
dplyr::filter(dat, between(ds, as.Date("2019-06-01"), as.Date("2019-06-30")))
# ds yhat
# 5 2019-06-30 370
### data.table
library(data.table)
as.data.table(dat)[ between(ds, as.Date("2019-06-01"), as.Date("2019-06-30")), ]
# ds yhat
# 1: 2019-06-30 370
(仅供参考:我预先dplyr::
考虑的唯一原因filter
是有些人可能会在不加载的情况下尝试调用dplyr
,并且会发现其stats::filter
行为有很大不同。一般来说,如果你library(dplyr)
那么你应该能够做到filter(dat, ...)
。)
数据:
(ds
已经转换为Date
-class。)
dat <- structure(list(ds = structure(c(16436, 16437, 16438, NA, 18077), class = "Date"), yhat = c(-100L, 250L, 50L, 60L, 370L)), row.names = c("1", "2", "3", "4", "5"), class = "data.frame")
推荐阅读
- php - 46/5000 使用 curl php 远程登录并绕过 recaptcha
- javascript - 是否可以同时显示一个 gmail 帐户的多个谷歌日历?
- javascript - 如何将其制作为 HighChart(附图片)
- javascript - 换行符 \n 在 Javascript Blotter 中不起作用
- java - 为什么我的 HashSet 中有重复数据?
- postgresql - 使用 pg-promise 转换值时出现奇怪的错误
- python - 无法让我的 python 应用程序在 docker 容器中启动
- apache-kafka - Kafka 数据中心故障转移
- python - 反向查询集/列表,然后切片
- javascript - 为什么这个带有微不足道的异步回调的测试用例(Jest)会失败?