【问题标题】:Extracting year and month from Date in R从R中的日期中提取年份和月份
【发布时间】:2019-04-20 08:10:33
【问题描述】:

所以我在 R 中有一个数据框:

Date

2002-01-24
2003-02-25
2004-03-26

当我检查日期列的数据类型时,

str(df$Date)

它是“日期”类型。

现在,我想创建一个名为“Month”的新列,我将在 Date 列中获取年份和月份的部分,不包括日期。

Date           Month
2002-01-24     2002-01
2003-02-25     2003-02
2004-03-26     2004-03

我的做法如下:

df$Month <- format(as.Date(df$Date), "%Y-%m"))

但是当我跑步时

str(df$Month)

它说它是 "chr" 类型而不是 "Date"。有什么方法可以将其保留在 "Date" 数据类型中,而不是转换为 chr?

【问题讨论】:

    标签: r


    【解决方案1】:

    Date 类描述了特定的一天。 (顺便说一句,内部表示是自 1970 年 1 月 1 日以来的 number 天。)因此,如果不指定日期,您就不能拥有 Date

    如果您想在表示特定月份时保留Date 类,您可以向下舍入到该月的第一天

    lubridate::floor_date(as.Date("2019-04-19"), "month")
    

    这将返回2019-04-01

    使用 OP 的数据:

    df <- data.frame(Date = as.Date(c("2002-01-24", "2003-02-25", "2004-03-26")))
    df$Month <- lubridate::floor_date((df$Date), "month")
    df
    
            Date      Month
    1 2002-01-24 2002-01-01
    2 2003-02-25 2003-02-01
    3 2004-03-26 2004-03-01
    
    str(df)
    
    'data.frame': 3 obs. of  2 variables:
     $ Date : Date, format: "2002-01-24" "2003-02-25" "2004-03-26"
     $ Month: Date, format: "2002-01-01" "2003-02-01" "2004-03-01"
    

    这对于绘制每月汇总非常方便。

    【讨论】:

      猜你喜欢
      • 2021-10-02
      • 2018-02-16
      • 2021-09-11
      • 2016-02-10
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多