代码之家  ›  专栏  ›  技术社区  ›  Maxxx

从R中的日期中提取年和月

r
  •  1
  • Maxxx  · 技术社区  · 6 年前

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

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

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

    str(df$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?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Uwe    6 年前

    这个 Date 类描述特定的一天。(顺便说一下,内部代表是 从1970年1月1日起的天数)所以,你不能有 日期 没有指定日期。

    如果你想保留 日期 当表示特定月份时,可以将 一个月的第一天 :

    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"
    

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