在 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")
在 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")