【问题标题】:How to keep vector as date class in R when changing format of dates更改日期格式时如何将向量保留为R中的日期类
【发布时间】:2021-11-22 15:32:31
【问题描述】:

我在 R 中有以下日期向量。我想将其从字符类转换为日期类,但是我只想将日期显示为年月 (%Y-%m) 而不是年月-day (%Y-%m-%d)

library(tidyverse)

dates <- structure(list(Date = c("2022-03-24", "2022-04-21", "2022-05-24", 
                        "2022-07-22", "2022-09-01")), row.names = c(NA, -5L), class = c("tbl_df", 
                                                                                        "tbl", "data.frame"))

dates %>% 
  mutate(Date = format(as.Date(Date), '%Y-%m'))

当使用format 将日期转换为%Y-%m 时,有没有办法将向量的类保持为&lt;date&gt; 而不是字符&lt;chr&gt;

# A tibble: 5 x 1
  Date      
  <chr>     
1 2022-03-24
2 2022-04-21
3 2022-05-24
4 2022-07-22
5 2022-09-01

【问题讨论】:

  • Date 也需要一天。可以使用 zoo::as.yearmon(Date) 创建 yearmon 类,或者您可以将 day 部分更改为恒定值,即 1,然后它应该也可以正常工作,即您可以在年、月、日中获取日期,并具有恒定的日期
  • @akrun 说得通!如何将每个日期的 day 更改为恒定值(即每月的第一天)?
  • 请查看下方发布的解决方案

标签: r date tidyverse


【解决方案1】:

基本 R 选项 -

您可以使用01 更改日期的最后两位数字。

as.Date(sub('\\d{2}$', '01', dates$Date))
#[1] "2022-03-01" "2022-04-01" "2022-05-01" "2022-07-01" "2022-09-01"

【讨论】:

    【解决方案2】:

    我们可以使用floor_date 将日期标准化为来自Dates 的单个常量值

    library(lubridate)
    library(dplyr)
    dates %>%
        mutate(Date2 = floor_date(ymd(Date), "month"))
    

    -输出

    # A tibble: 5 × 2
      Date       Date2     
      <chr>      <date>    
    1 2022-03-24 2022-03-01
    2 2022-04-21 2022-04-01
    3 2022-05-24 2022-05-01
    4 2022-07-22 2022-07-01
    5 2022-09-01 2022-09-01
    

    或者另一种选择是分配day

    dates$Date2 <- ymd(dates$Date)
    day(dates$Date2) <- 1
    > dates
    # A tibble: 5 × 2
      Date       Date2     
      <chr>      <date>    
    1 2022-03-24 2022-03-01
    2 2022-04-21 2022-04-01
    3 2022-05-24 2022-05-01
    4 2022-07-22 2022-07-01
    5 2022-09-01 2022-09-01
    

    【讨论】:

      猜你喜欢
      • 2019-07-28
      • 2020-03-12
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 2021-01-11
      • 1970-01-01
      • 2013-08-11
      相关资源
      最近更新 更多