在R中转换日期格式

Esw*_*war 0 r date

dates <- as.Date(dli$Dates)

class(dates)
[1] "Date"

dates
   [1] "2016-01-01" "2016-01-02" "2016-01-03" "2016-01-04" "2016-01-05" "2016-01-06"
   [7] "2016-01-07" "2016-01-08" "2016-01-09" "2016-01-10" "2016-01-11" "2016-01-12"
  [13] "2016-01-13" "2016-01-14" "2016-01-15" "2016-01-16" "2016-01-17" "2016-01-18"
  [19] "2016-01-19" "2016-01-20" "2016-01-21" "2016-01-22" "2016-01-23" "2016-01-24"
  [25] "2016-01-25" "2016-01-26" "2016-01-27" "2016-01-28" "2016-01-29" "2016-01-30"
  [31] "2016-01-31" "2016-02-01" "2016-02-02" "2016-02-03" "2016-02-04" "2016-02-05"
  [37] "2016-02-06" "2016-02-07" "2016-02-08" "2016-02-09" "2016-02-10" "2016-02-11"
Run Code Online (Sandbox Code Playgroud)

这是我的日期格式,所以我需要将其转换为“ 2016-month-day”,我正在获取NA值

dates <- as.Date(dli$Dates,"%d/%b/%Y")

class(dates)
[1] "Date"

dates
   [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [31] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [61] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [91] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
 [121] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 
Run Code Online (Sandbox Code Playgroud)

您能提出任何建议吗?

Col*_*FAY 8

好的做法是将 R 中的日期存储为 YYYY-MM-DD,并且您的字符串似乎已经采用了良好的格式,但是:

您传递的格式as.Date必须描述字符串包含的内容,而不是您期望作为输出的内容。

"%d/%b/%Y" 代表“天作为数字(0-31)斜线缩写月份斜线4位数字年份”,并且您的字符串格式是“4位数字年份 - 月份作为数字 - 日作为数字”。

如果要格式化日期,则需要调用format

> date <- "2016-01-01"
> date <- as.Date(date, format = "%Y-%m-%d")
> date
[1] "2016-01-01"
> format(date, "%d/%b/%Y")
[1] "01/jan/2016"
Run Code Online (Sandbox Code Playgroud)


Tim*_*sen 5

如果您只想以这种格式呈现日期,请使用format

x <- as.Date("2016-01-01")
format(x, "%Y %b %a %d")

[1] "2016 Jan Fri 01"
Run Code Online (Sandbox Code Playgroud)

这里有关注点的分离。如果您已经将日期信息作为日期类型存储在 R 中,那么您无需在内部更改任何内容即可从这些日期中提取更多信息。

演示


小智 5

要获取所需的格式,即2016-month-dayformat一旦将字符串向量转换为Data类型,就可以使用function。

我希望下面的代码片段可以消除您的疑问。

> d = c("2016-02-08","2016-02-18","2015-02-08","2016-02-02")
> class(d)
[1] "character"
> d = as.Date(d)
> class(d)
[1] "Date"
> d = format(d,"%Y-%b-%d")
> d
[1] "2016-Feb-08" "2016-Feb-18" "2015-Feb-08" "2016-Feb-02"
Run Code Online (Sandbox Code Playgroud)

格式函数将日期类型对象转换为所需的格式。请参考此链接以获取有关日期类型格式的更多信息。