在R中更改日期格式,保留其模式,类和类型

Shy*_*han 0 r date

我写了以下代码来更改日期格式:

m <- as.Date("30-sep-15","%d-%b-%y")
l <- format(m,"%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

结果:

l is 20150930
Run Code Online (Sandbox Code Playgroud)

现在,当我检查结果对象的类时,即l

class(l)
"character"
Run Code Online (Sandbox Code Playgroud)

类和模式更改为字符.我们可以保留此对象的Date类,而且还表现在以下格式此对象:20150930??

Rol*_*and 5

您可以使用关联的print方法定义自己的S3类:

m <- as.Date("30-sep-15","%d-%b-%y")
m

prettyDate <- function(x) {
  if (!inherits(x, "Date")) stop("Only objects of class 'Date' can be prettyDates.")
  class(x) <- c("prettyDate", class(x))
  x
}

m <- prettyDate(m)

print.prettyDate <- function(x, ...) {
  stopifnot(inherits(x, "Date"))
  print.default(format(x, "%Y%m%d"))
}

m
#[1] "20150930"
class(m)
#[1] "prettyDate" "Date" 
Run Code Online (Sandbox Code Playgroud)

如果您还希望在data.frames中打印格式,则还需要定义format方法.

Date 如果没有其他类的方法,方法仍将用于该对象:

as.POSIXct(m)
#[1] "2015-09-30 02:00:00 CEST"
Run Code Online (Sandbox Code Playgroud)