你们中的任何人都可以帮助将日期从20150101
转换为缩写形式Jan-2015
吗?
我尝试了以下方法。
x=20150101
as.yearmon(x, "%b-%y")
但是我得到了以下错误
charToDate(x)出错: 字符串不是标准的明确格式
非常感谢任何帮助。
答案 0 :(得分:3)
您可以使用strptime的组合将字符串转换为日期对象,并格式化为您想要的格式:
date = "20150101"
format(strptime(date,format="%Y%m%d"),"%b-%Y")
答案 1 :(得分:3)
问题中的代码存在两个问题:
输入格式指定为"%b-%y"
但应该是。{
"%y%m"
我们希望在这里使用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月,...,12月12日表示12月。外部表示为缩写月份按照所示的空间和年份。
上述内容可能已足够但如果不将其转换为格式为"%b-%y"
或"%b-%Y"
的字符串,请使用format
:
format(ym, "%b-%y")
## [1] "Jan-15"
format(ym, "%b-%Y")
## [1] "Jan-2015"
答案 2 :(得分:2)
使用lubridate
和zoo
个包:
library(lubridate)
library(zoo)
x <- "20150101"
as.yearmon(as.Date(ymd(x)))
[1] "jan 2015"