gpt4 book ai didi

r - 将列中的多种日期格式转换为单一形式

转载 作者:行者123 更新时间:2023-12-02 17:34:30 25 4
gpt4 key购买 nike

我在数据框中有一列,其中包含以多种形式存储的日期信息,例如

dob <- c("18/02/1983","36782","01/11,1999 11:55",
"Dead 12/12/2001","Alive 03/07/1985")

我想将所有这些转换成格式为 "%d/%m/%Y"POSIXlt 日期,没有时间信息,也没有“Dead”“Alive” 作为前缀。

所有以前的类似问题的解决方案都只涉及两种可能的格式,我可以告诉,而我有更多,而且我有转换 5 位数字格式日期的问题(我认为这是起源于 1970- 的数字日期01-01 来自 Excel)也。我正在使用 R-3.1.2。如有任何帮助,我们将不胜感激!

最佳答案

lubridate 就日期格式而言是灵活的。

根据 5 个日期的样本在较大数据集中的代表性,您可以解析一次以过滤掉通常为日-月-年的样本。然后,假设其余部分是狡猾的 Excel 日期,根据它们的正确来源分别解析它们(警告的话,这可能是 depend on which OS Excel 文件是在其上创建的)。

library(lubridate)
d <- parse_date_time(dob, c('%d%m%y', '%d%m%y %H%M'))
d[is.na(d)] <- as.POSIXct(as.Date(as.numeric(dob[is.na(d)]),
origin = "1899-12-30"))

d

## [1] "1983-02-18 00:00:00 UTC" "2000-09-13 00:00:00 UTC" "1999-11-01 11:55:00 UTC"
## [4] "2001-12-12 00:00:00 UTC" "1985-07-03 00:00:00 UTC"

AFAIK 你不能从 POSIXlt/POSIXct 对象中省略时间信息,所以如果你想这样做,你可能需要:

as.Date(d)

将采用 %d-%m-%Y 格式(在我的语言环境中),

format(d, '%d/%m/%Y')

这将是字符

关于r - 将列中的多种日期格式转换为单一形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28564260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com