8

我的原始 Excel 文件中的日期代表“Jan-01”格式的月度数据。当然,我可以先手动将它们转换为 Excel 中更有用的东西,然后再输入到 R 中。

如何将此类日期转换为 R 中的 Date 类?

4

3 回答 3

15

如果你想要一个date类,使用 as.Date:

x <- "Jan-01"
as.Date(paste("01-", x, sep = ""), format = "%d-%b-%y")

如果您想要POSIXct上课,请考虑使用lubridate

library(lubridate)
x <- "Jan-01"
dmy(paste("01-", x , sep =""))

如果您只想依靠base

x <- "Jan-01"
as.POSIXct(paste("01-", x, sep = ""), format = "%d-%b-%y")
于 2012-05-18T05:43:12.250 回答
5

编辑:

最简单的方法是在 zoo 中使用 yearmon 类:

 require(zoo)
 as.yearmon(x, "%b-%y")
#[1] "Jan 2001"

稍长的方法:

 x="Jan-01"
 xs<-strsplit(x, "-")
 xd <- as.Date( xs[[1]][2], paste( xs[[1]][1], "01",  sep="-"), format="%y-%b-%d")
 xd
#[1] "2001-01-01"

如果要处理一串日期,则可能需要使用sapplyif 选择第二种方法来制作年份向量和月份向量

于 2012-05-18T04:21:54.907 回答
0

如果您强制指定该月的第一天,您可以将日期转换为:

datevar <- c("Jan-01","Feb-01","Mar-12")
as.Date(paste("01",datevar,sep="-"),"%d-%b-%y")

应该注意的是,这与 DWin 下面给出的答案基本相同,只是手动指定了日期而不是年份。

于 2012-05-18T05:23:22.150 回答