【发布时间】:2021-03-03 15:45:00
【问题描述】:
我有一个包含混合日期格式的数据框列,例如 30/06/2020、07/2020 和 2020。我想将四位数字转换为日期(例如 2020 -> XX/XX /2020)。我有不同的年份,而不仅仅是 2020 年,所以如果可能的话,我更喜欢通用的表达方式。
补充问题: 当我从 excel 文件中读取数据时,我得到的是五位数字而不是日期。根据我的阅读,这些数字是自 1900 年以来经过的天数。因此,实际列中还包含五位数字、代表年份的四位数字和其他日期。 我已经处理了这个问题,但不是以最佳方式。有没有一种通用的方法来处理所有这些格式?抱歉,帖子太大了
K
【问题讨论】:
-
我不知道有一个函数能够将不同的日期格式解析到同一列中。 (试试看
lubridate,它有很多处理日期的函数)。但是,如果您知道最后四位数字代表年份,则可以提取信息而无需将其解析为日期。见stringr::str_sub。对于您的最后一个问题,您可以使用janitor::excel_numeric_to_date() -
请分享一些示例输入(复制/粘贴有效的 R 语法)和所需的输出。如果输入是
2020,你想要一个带有"XX/XX/2020"的字符串吗?或者,如果没有找到月份/年份,您是否希望默认为 1 月 1 日?或者是其他东西?您的标题是“四位数字”,所以您只需要年份吗? -
这个stackoverflow.com/a/52319606/3358272 可能有用(特别是以
formats <- c(...)开头的第三个代码块),其中formats按优先顺序提供候选格式。 -
如果您创建一个小的可重现示例以及预期的输出,这将更容易提供帮助。阅读how to give a reproducible example。