【发布时间】:2021-02-20 22:43:37
【问题描述】:
我正在尝试根据它们在日期向量中的位置来解析多种日期格式。在某些情况下,数据将其使用的格式从 y/m/d 转换为 y/d/m。对于像 2010/07/03 这样在 lubridate 中指定顺序的日期,这很烦人。
这是日期示例
datevec <- c("2011/07/01", "2011/07/02", "2011/07/03", "2011/02/07" )
日期是这样设置的,所以在某一行之前,日期是一种格式,而在另一行之后,日期是另一种格式,所以我试图为函数提供索引
当我尝试使用这个加上 lubridate 来解析它们时,它只返回了 3 个日期。
lapply(datevec, function(x, i) ifelse( x[i] <4, parse_date_time(x, "%Y-%m-%d"), parse_date_time(x,"%Y-%d-%m" )) )
【问题讨论】:
-
lapply只做一个参数,所以i在你的匿名函数中是未定义的。此外,我怀疑x[i]可能是多余的。你认为那里应该发生什么?lubridate::parse_date_time(datevec, c("%Y-%m-%d", "%Y-%d-%m"))为我工作。 -
顺便说一句,如果数据管道中较早的部分产生了诸如
2010/07/03与2010/03/07之类的模棱两可的日期......是的,世界上没有任何代码会知道哪种格式合适。它是上下文相关的,基于您对自己拥有或继承的流程的了解,并且可能基于数据中的其他线索。 -
数据的设置使得某一行之前的所有内容都是一种格式,而该行之后的所有内容都是另一种格式。如果我只是通过索引指定具有某种格式的行(在这种情况下