【发布时间】:2018-09-06 11:53:07
【问题描述】:
我有一列日期格式如下:
yyyymm (e.g. 201809)
我希望它们的格式如下:
mm.yyyy (e.g. 09.2018)
我试过了:
FF5factors$date <- strptime(FF5factors$date, format= "%Y%m")
format(FF5factors$date, format="%m.%Y")
但它只返回 NA 值。
【问题讨论】:
我有一列日期格式如下:
yyyymm (e.g. 201809)
我希望它们的格式如下:
mm.yyyy (e.g. 09.2018)
我试过了:
FF5factors$date <- strptime(FF5factors$date, format= "%Y%m")
format(FF5factors$date, format="%m.%Y")
但它只返回 NA 值。
【问题讨论】:
怎么样:
d <- '201809'
format(as.Date(d,'%Y%M'),'%m.%Y')
[1] "09.2018"
【讨论】:
as.Date.character() 而不是as.Date()。
d<-"201809"; paste(substr(d,5,6),substr(d,1,4),sep=".") 这样的粘贴功能并没有太大的不同
"character",并且由于 OP 选择了 G. Grothendieck 的完整答案(我给 +1),这意味着它并不一定对此感兴趣。
这里有一些替代方案。该问题没有以可重复的形式提供日期,因此我们假设下面的第一行虽然前 4 个替代方案也适用于 date <- "201809" 和 date <- factor(201809) 。
date <- 201809
# 1
sub("(....)(..)", "\\2.\\1", date)
## [1] "09.2018"
# 2
library(zoo)
format(as.yearmon(format(date), "%Y%m"), "%m.%Y")
## [1] "09.2018"
# 3
paste(substr(date, 5, 6), substr(date, 1, 4), sep = ".")
## [1] "09.2018"
# 4
format(as.Date(paste0(date, "01"), "%Y%m%d"), "%m.%Y")
## [1] "09.2018"
# 5
sprintf("%02d.%d", date %% 100, date %/%100)
## [1] "09.2018"
【讨论】: