1) 将日期转换为 zoo 的 "yearmon" 类,然后转换为 "Date" 类:
> library(zoo)
> transform(df, Date = as.Date(as.yearmon(Date)))
Date Val
1 2015-08-01 1
2 2015-09-01 2
3 2015-08-01 3
问题没有指定转换为哪个日期,因此我们使用了当月的第一天。如果需要最后一个月的时间,我们可以使用它来代替:
transform(df, Date = as.Date(as.yearmon(Date), frac = 1))
2) 不使用 zoo 的另一种可能性是自己添加月份中的某一天,然后转换为 "Date" 类。
> transform(df, Date = paste(Date, 1, sep = "-"))
Date Val
1 2015-08-01 1
2 2015-09-01 2
3 2015-08-01 3
3) 或者,可能只想直接使用"yearmon",因为它直接模拟没有日期的年份和月份。
> library(zoo)
> transform(df, Date = as.yearmon(Date))
Date Val
1 Aug 2015 1
2 Sep 2015 2
3 Aug 2015 3
注意:不要使用"POSIXct" 类,因为这会产生与时区相关的结果,如果您不小心,可能会导致细微的错误。一个时区的日期不一定与另一个时区的日期相同。