【问题标题】:Inconsistent dates formatting (lubridate fail)日期格式不一致(润滑失败)
【发布时间】:2019-04-18 15:49:30
【问题描述】:

我有一个不一致的日期向量,包括(主要)这三种格式: “%d/%m/%y”、“%m/%d/%y”和“%d/%m/%Y”

我试图实现这个:

df <- as.data.frame(c("30/12/00","7/31/09","17/09/2008"),col.names = "original_date")

guess_date <- function(x){
  require(lubridate)
  guess <- guess_formats(x, c("mdy","dmy"))
  date <- as.Date(x, guess)[1]
  return(date)
}

df$date <- lapply(df$original_date, guess_date)

【问题讨论】:

  • 当您似乎有“dmy”格式的数据时,您似乎只会将“mdy”传递给guess_formats。但是你对像“2000 年 11 月 12 日”这样的日期做了什么?如果日期可以以月份或日期开头,则不清楚应该如何解释。预期的输出是多少?

标签: r date formatting lapply lubridate


【解决方案1】:

我们可以用parse_date_time传递它

library(lubridate)
parse_date_time(df$original_date, 
    guess_formats(as.character(df$original_date), c("mdy", "dmy", "dmY")))
#[1] "2000-12-30 UTC" "2009-07-31 UTC" "2008-09-17 UTC"

【讨论】:

  • 我认为添加 c("mdy","dmy") 可以读取欧洲日期。仍然 lapply 不起作用
  • @MCS 在您的函数中,您将格式传递给as.Date,而猜测格式以与as.Date 预期的方式略有不同的方式返回格式。例如guess_formats(as.character(df$original_date), c("mdy", "dmy"))# Omdy dOmy dOmy mdy dmy dmy "%Om/%d/%y" "%d/%Om/%y" "%d/%Om/%Y" "%m/%d/%y" "%d/%m/%y" "%d/%m/%Y" 注意格式的变化
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-09-30
  • 2020-08-24
  • 1970-01-01
  • 2022-12-07
  • 2020-06-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多