【问题标题】:Does tidyverse offer xts range-based queries?tidyverse 是否提供基于 xts 范围的查询?
【发布时间】:2021-09-20 09:58:44
【问题描述】:

xts 允许像 willsh["1979-12-31/2017-12-31"] 这样的基于范围的自然时间查询

tidyverse 是否提供类似的功能?

【问题讨论】:

    标签: r tidyverse xts


    【解决方案1】:

    lubridate 有间隔类。其中任何一个都可以用来表示从 1979-12-31 到 2017-12-31 的时间间隔。

    library(dplyr)
    library(lubridate)
    
    ival1 <- interval("19791231/20171231")
    ival1a <- interval("1979-12-31/2017-12-31") 
    ival2 <- interval("19791231/P38Y")
    ival2a <- interval("1979-12-31/P38Y")
    ival3 <- interval(ymd(19791231), ymd(20171231))
    ival3a <- interval(ymd("1979-12-31"), ymd("2017-12-31"))
    
    sapply(list(ival1, ival1a, ival2, ival2a, ival3, ival3a), identical, ival1)
    ## [1] TRUE TRUE TRUE TRUE TRUE TRUE
    

    %within%可用于检查日期是否在区间内。

    ymd(c(19791230, 19791231, 19800101, 20171230, 20171231, 20180101)) %within% ival1
    ## [1] FALSE  TRUE  TRUE  TRUE  TRUE FALSE
    

    我们可以这样使用它:

    # test input
    willsh <- tibble(Date = seq(ymd(19700101), ymd(20210101), by = "10 year"), 
                 year = year(Date))
    
    willsh %>% filter(Date %within% interval("1979-12-31/2017-12-31"))
    ## # A tibble: 4 x 2
    ##   Date        year
    ##   <date>     <dbl>
    ## 1 1980-01-01  1980
    ## 2 1990-01-01  1990
    ## 3 2000-01-01  2000
    ## 4 2010-01-01  2010
    

    【讨论】:

    • 接受这一点,因为它最接近 xts 语法,@ronak-shah。谢谢 G. Grothendieck
    【解决方案2】:

    No dplyrtidyverse 没有这样的语法。你可以使用filterlike

    library(dplyr)
    
    willsh %>% 
       filter(Date >= as.Date("1979-12-31"), Date <= as.Date("2017-12-31"))
    

    或者使用between

    willsh %>%
      filter(between(Date, as.Date("1979-12-31"), as.Date("2017-12-31")))
    

    【讨论】:

    • 这就是我用的。
    【解决方案3】:

    我们可以使用

    library(data.table)
    setDT(willsh)[between(Date, as.IDate("1979-12-31"), as.IDate("2017-12-31"))]
    

    【讨论】:

      猜你喜欢
      • 2016-08-15
      • 1970-01-01
      • 1970-01-01
      • 2018-04-27
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      相关资源
      最近更新 更多