在 R 中将 "Month Date" 更改为 "Year-Month-Date"

Changing "Month Date" to "Year-Month-Date" in R

在 R 中,我有一个形式为

的向量
> date
  [1] "Jan 16"  "Feb 10"  "Dec 11"

现在我想将其更改为 "Year-Month-Date" R 中特定年份的形式,比如 2011 年。所以输出应该是:

>date
[1] "2011-01-16" "2011-02-10" "2011-12-11"

谁能帮我用 R 做这个?

正如 所建议的,as.Date(paste(date, 2011), '%b %d %Y') 可用于该目的。但是,如果您当前的语言环境不是英语语言环境,但您仍然想解析英语缩写的月份名称,那么问题就来了。 为此,您需要暂时将默认语言环境切换到另一个语言环境。这是一个解决方案:

date <- c("Jan 16", "Feb 10", "Dec 11")
oldloc <- Sys.getlocale("LC_TIME") # save current locale
Sys.setlocale("LC_TIME", "POSIX") # switch to an English (US) one
as.Date(paste(date, 2011), '%b %d %Y') # @akrun's solution
## [1] "2011-01-16" "2011-02-10" "2011-12-11"
Sys.setlocale(oldloc) # restore locale

这里的 %b 格式代表缩写的月份名称。另一方面,对于全名,请使用 %B,请参阅 ?strptime

您也可以开始探索 lubridate 包。

library(lubridate)
date <- c("Jan 16",  "Feb 10",  "Dec 11")

# month, day , year
mdy(paste(date, 2011))

[1] "2011-01-16 UTC" "2011-02-10 UTC" "2011-12-11 UTC"

如果您不想附加时区,则可以使用 as.Date

as.Date(mdy(paste(date, 2011)))
[1] "2011-01-16" "2011-02-10" "2011-12-11"

使用 mdy 您还可以指定语言环境和时区

mdy(paste(date, 2011), locale=Sys.getlocale("LC_TIME"), tz="UTC")