繁体   English   中英

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

[英]Convert numeric date format (YYYYMMDD; 20150101) into Year-Month

你们中的任何人都可以帮助将日期从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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM