R语言 从数据框中筛选日期时出错

ymdaylpp  于 2023-05-26  发布在  其他
关注(0)|答案(2)|浏览(204)

我有一个大数据框架,有多个日期列,我试图过滤日期与今天的日期在日期列,但无法过滤,因为我得到了下面的一些错误。
as.POSIXlt.character()中的错误引起:!字符串不是标准的明确格式运行rlang::last_trace()查看错误发生的位置。
下面是日期格式,列的类显示为字符

dd <- data.frame(c1 =c("1/16/2023 1:26", "1/16/2023 1:26", "1/16/2023 1:40", "1/16/2023 2:05", 
                       "1/16/2023 2:05", "1/16/2023 2:10"))

dd %>% filter(as.date(c1) == lubridate::today())
dd %>% filter(as.date(as.character(c1) == lubridate::today()))
dd %>% filter(c1 == lubridate::today())
7lrncoxx

7lrncoxx1#

library(tidyverse)

dd <-
  tibble(
    c1 = c(
      "1/16/2023 1:26",
      "1/16/2023 1:26",
      "1/16/2023 1:40",
      "1/16/2023 2:05",
      "1/16/2023 2:05",
      "1/16/2023 2:10", 
      "5/25/2023 2:10"
    )
  ) 

dd %>%  
  mutate(across(c1, mdy_hm)) %>% 
  filter(date(c1) == today())

# A tibble: 1 x 1
  c1                 
  <dttm>             
1 2023-05-25 02:10:00
h43kikqp

h43kikqp2#

您可以提供一种格式:

library(tidyverse)
library(lubridate)

dd <- data.frame(c1 =c("1/16/2023 1:26", "1/16/2023 1:26", "1/16/2023 1:40", "1/16/2023 2:05", 
                       "1/16/2023 2:05", "1/16/2023 2:10"))

dd %>% filter(as.Date(c1, format = "%m/%d/%Y") == as.Date("2023-01-16"))
#>               c1
#> 1 1/16/2023 1:26
#> 2 1/16/2023 1:26
#> 3 1/16/2023 1:40
#> 4 1/16/2023 2:05
#> 5 1/16/2023 2:05
#> 6 1/16/2023 2:10
dd %>% filter(as.Date(c1, format = "%m/%d/%y") == lubridate::today())
#> [1] c1
#> <0 rows> (or 0-length row.names)

创建于2023-05-25带有reprex v2.0.2
顺便说一句,as.date()不存在,请尝试使您的可重复的示例可重复。

相关问题