从R中的日期提取年和月

从R中的日期提取年和月,r,R,所以我在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 <-

所以我在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"))

它说它是“chr”类型,而不是“Date”。有没有办法将其保存在“日期”数据类型中,而不是转换为chr?

日期类描述特定的一天。(顺便说一句,内部表示是自1970-01-01以来的天数。)因此,如果不指定日期,就不能有
日期

如果要在表示特定月份时保留
Date
类,可以将其四舍五入到月份的第一天:

将返回
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
这对于绘制月度汇总非常方便

lubridate::floor_date(as.Date("2019-04-19"), "month")
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"