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