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

use*_*979 4 r date zoo

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

我尝试了下面的方法。

x = 20150101
zoo::as.yearmon(x, "%b-%y")
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误

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

任何帮助将非常感激。

G. *_*eck 5

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

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

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

因此,请尝试以下操作:

 library(zoo)
 ym <- as.yearmon(as.character(20150101), "%Y%m")
Run Code Online (Sandbox Code Playgroud)

给予:

> ym
[1] "Jan 2015"
Run Code Online (Sandbox Code Playgroud)

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

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

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

format(ym, "%b-%Y")
## [1] "Jan-2015"
Run Code Online (Sandbox Code Playgroud)