通过dplyr过滤数据帧时出现意外的润滑间隔行为

时间:2017-11-14 01:37:12

标签: r dplyr lubridate

我正在使用类似于以下块中可用的数据集创建lubridate区间向量:

dat <- readr::read_rds(url("https://github.com/mienkoja/stack_stash/blob/master/dat.rds?raw=true"))

dat_mod <- dplyr::mutate(dat, interval = lubridate::interval(lubridate::ymd(start_combo)
                                                             ,lubridate::ymd(stop_combo)))

但是,如果我尝试通过dplyr过滤对象,则会返回一个意外的间隔:

dplyr::filter(dat_mod, id == 7000)

## A tibble: 1 x 4
#     id start_combo stop_combo                       interval
#  <int>       <dbl>      <dbl>                 <S4: Interval>
#1  7000    20170802   20170816 2016-10-11 UTC--2016-10-25 UTC

实际上,每个间隔(通过dplyr::filter查看)似乎与预期间隔的长度相同,但都锚定(错误地)到2016-10-11 UTC。

我怀疑这是一个dplyr::filter错误,因为我可以用括号表示法搜索并获得预期的结果。

dat_mod[dat_mod$id == 7000, ]

## A tibble: 1 x 4
#     id start_combo stop_combo                       interval
#  <int>       <dbl>      <dbl>                 <S4: Interval>
#1  7000    20170802   20170816 2017-08-02 UTC--2017-08-16 UTC

然而,在我报告错误之前,我想我会到这儿来看看我是否遗漏了某些东西,这种行为是设计的。

问题:是否可以使用dplyr::filter并检索实际的lubridate间隔(通过&#34;括号表示法检索&#34;)?

更新:由于没有人跳过这个,我将假设这是一个暂时的错误。请参阅GitHub上发布的以下问题:https://github.com/tidyverse/dplyr/issues/3206

一旦我获得修复(通过GitHub)或解决方案(通过SO),我将在这两个地方进行更新。

0 个答案:

没有答案