从R中的Date中提取年和月

时间:2019-04-20 08:10:33

标签: r

所以我在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” 类型,而不是“日期” 。有什么方法可以将其保留在“日期” 数据类型中,而不是转换为chr吗?

1 个答案:

答案 0 :(得分:1)

Date类描述特定的一天。 (顺便说一句,内部表示是自1970-01-01以来的天数 。)因此,如果不指定日期,就无法拥有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"

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

相关问题