我的数据框的日期格式为YYYY-MM,类因素,我正在尝试将其转换为课程日期。
我试过了:
Date <- c("2015-08","2015-09","2015-08")
Val <- c(1,2,3)
df <- data.frame(Date,Val)
df[,1] <- as.POSIXct(as.character(df[,1]), format = "%Y-%m")
df
但这不起作用。我很感激你的帮助。
答案 0 :(得分:7)
1)将日期转换为动物园的"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"
类,因为这会产生与时区相关的结果,如果您不小心,可能会导致细微的错误。一个时区的日期不一定与另一个时区的日期相同。
答案 1 :(得分:4)
R不支持“%Y-%m”格式的日期......需要一天
您可以执行以下操作:
as.POSIXct(paste0(as.character(df[,1]),"-01"), format = "%Y-%m-%d")
导致
"2015-08-01 CEST" "2015-09-01 CEST" "2015-08-01 CEST"