如何使用 lubridate 在 R 中仅选择两年(不包括中间的年份)

问题描述 投票:0回答:1

我正在使用RStudio和一个半大型数据集,其中我只想在observation_date列的数据集中选择2016年和2023年。我尝试使用 lubridate 来做到这一点。然而,我只找到了如何在这两年之间进行选择,即使这样我也得到了一个错误,它做了一个范围而不是两年本身。此外,在数据集中,2016 年和 2023 年的结束时间不同,因为 2023 年的数据于 10 月结束。我将不胜感激任何帮助,因为我是新手。

我在下面列出了迄今为止我拥有的第一个代码块。我将附上该列的屏幕截图。不幸的是我无法附上完整的数据。 Here is what the column looks like 到目前为止,我的代码如下所示: enter image description here

错误如下:

mutate()
中的错误: ℹ 在争论中:
Date = lubridate::dmy(Date)
。 由
as.character()
中的错误引起: !无法将“闭包”类型强制转换为“字符”类型的向量 回溯:

  1. BudburstObs %>% mutate(日期 = lubridate::dmy(Date)) %>% ...
  2. 润滑::dmy(日期)
  3. 润滑:::.parse_xxx(...)
  4. base::lapply(list(...), .num_to_date)
  5. 润滑(本地)FUN(X[[i]], ...) mutate(., Date = lubridate::dmy(Date)) 中的错误: 由
    as.character()
    中的错误引起: !无法将“闭包”类型强制转换为“字符”类型的向量
library(dplyr)
df %>%
  mutate(Date = lubridate::dmy(Date)) %>%
  filter(Date >= as.Date('01-01-2016') & Date <= as.Date('2023-10-31'))
select()

BudburstObs$observation_date_NEW <- mdy(BudburstObs$observation_date)
str(BudburstObs) 

我尝试通过 lubridate 寻找一种仅选择两年的方法,但还没有弄清楚。我已经找到了如何做一个范围,但这不是我想要的。我也遇到错误。

r lubridate
1个回答
0
投票

您的代码中有两个问题:

  1. 不是
    dmy(Date)
    ,就你而言,它是
    mdy(Date)
  2. 在您的代码中,您尝试过滤 2016 年至 2023 年之间的日期,而不仅仅是您在介绍中所述的 2016 年和 2023 年。

这是一个改编的代码(未经测试):

library(dplyr)
library(lubridate)
df %>%
  mutate(Date = lubridate::mdy(Date)) %>% 
  filter(year(Date) == 2016  | year(Date) == 2023) # year is from lubridate
© www.soinside.com 2019 - 2024. All rights reserved.