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

问题描述 投票:3回答:3

你们谁能帮我把日期转换成 20150101 缩略语 Jan-2015 ?

我尝试了下面的方法。

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

但我得到了下面的错误信息

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

任何帮助将是非常感激的。

r date zoo
3个回答
4
投票

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

  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月,112代表2月,......,1112代表12月,外部则显示为缩写月份,后面是空格和年份,如图所示。

以上可能已经足够了,但如果不能将其转换为一个格式为 "%b-%y""%b-%Y" 使用 format:

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

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

3
投票

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

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

2
投票

使用 lubridatezoo 包。

library(lubridate)
library(zoo)

x <- "20150101"

as.yearmon(as.Date(ymd(x)))

[1] "jan 2015"
© www.soinside.com 2019 - 2024. All rights reserved.