将每月数据从一种类型转换为另一种类型

时间:2020-02-12 01:54:17

标签: r date datatable substring lubridate

我有一个具有每月日期的列,该列具有此类类型(月数,_,年):

Date
9_2018
1_2013
12_2014

我想将此日期格式转换为以下格式的日期(年,月):

New_Date
201809
201301
201412

我该怎么做?

2 个答案:

答案 0 :(得分:2)

我们可以使用zoo::as.yearmon来转换日期,然后使用format来获取所需格式的数据。

format(zoo::as.yearmon(df$Date, "%m_%Y"), "%Y%m")
#[1] "201809" "201301" "201412"

或者也可以通过将任意日期粘贴到我们拥有的年月值中来在R基数中完成。

format(as.Date(paste0("1_", df$Date), "%d_%m_%Y"), "%Y%m")

数据

df <- structure(list(Date = structure(c(3L, 1L, 2L), .Label = c("1_2013", 
"12_2014", "9_2018"), class = "factor")),
class = "data.frame",row.names = c(NA, -3L))

答案 1 :(得分:1)

将月份填充零,然后在“ _”处分割:

library(stringr)

mon <- sapply(strsplit(Date, "_"), FUN="[", 1)
mon <- str_pad(mon, width=2, pad="0")
year <- sapply(strsplit(Date, "_"), FUN="[", 2)
paste0(year,mon)
[1] "201809" "201301" "201412"