如何使用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类。(

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")

相关内容

  • 没有找到相关文章

最新更新