r-将数字日期格式(YYYYMMDD;20150101)转换为年月



你们中的任何人能帮助将日期从20150101转换为缩写形式Jan-2015吗?

我尝试了下面的方法。

x = 20150101
zoo::as.yearmon(x, "%b-%y")

但我得到了以下错误

charToDate(x)错误:字符串不是标准的明确格式

如有任何帮助,我们将不胜感激。

问题中的代码有两个问题:

  1. 输入格式被指定为"%b-%y",但应该"%y%m"

  2. 我们希望在这里使用as.yearmon.character,而不是as.yearmon.numeric,因此输入应转换为"character"

因此,试试这个:

 library(zoo)
 ym <- as.yearmon(as.character(20150101), "%Y%m")

给予:

> ym
[1] "Jan 2015"

注意,"yearmon"对象内部存储为年份+分数,其中分数为0表示1月,1/12表示2月。。。,11/12表示12月。在外部,它们被呈现为一个缩写的月份,后面跟着一个空格和年份,如图所示。

以上内容可能足够,但如果不将其转换为格式为"%b-%y""%b-%Y"的字符串,请使用format:

format(ym, "%b-%y")
## [1] "Jan-15"
format(ym, "%b-%Y")
## [1] "Jan-2015"

您可以使用strptime的组合将字符串转换为日期对象,并将格式转换为您想要的格式:

date = "20150101"
format(strptime(date,format="%Y%m%d"),"%b-%Y")

使用lubridatezoo包:

library(lubridate)
library(zoo)
x <- "20150101"
as.yearmon(as.Date(ymd(x)))
[1] "jan 2015"

最新更新