gpt4 book ai didi

r - 当输入值可以是不同格式时,如何在 R 中将日期转换为格式 "yyyy-mm-dd"

转载 作者:行者123 更新时间:2023-12-02 04:03:08 24 4
gpt4 key购买 nike

我可以接收日期可以采用以下两种格式之一的文件:“mm/dd/yyyy”或“yyyy-mm-dd”。它们是首先要考虑的因素。无论我收到的日期格式如何,我都希望能够将它们转换为“yyyy-mm-dd”格式的“日期”数据类型。我尝试过使用

df_1$Date <- as.Date(as.character(df_1$Date), format = "%Y-%m-%d")

这适用于格式“yyyy-mm-dd”,但当输入值的格式为“mm/dd/yyyy”时给出 NA。同样,我尝试过的其他方法仅适用于这两种格式中的一种。我需要它为两者工作。

下面我发布了用于创建数据集和复制问题的代码。

df_1 <- structure(list(Text.Identifier = c(4L, 5L, 7L, 1838L), Date = structure(c(2L, 
2L, 1L, 3L), .Label = c("5/18/2016", "7/12/2015", "8/29/2016"
), class = "factor")), .Names = c("Text.Identifier", "Date"), class = "data.frame", row.names = c(NA,
-4L))

df_2 <- structure(list(Text.Identifier = 1:4, Date = structure(c(5L,
5L, 5L, 1L), .Label = c("2015-07-12", "2016-05-01", "2016-05-05",
"2016-05-09", "2016-05-12", "2016-05-18", "2016-08-01", "2016-08-19",
"2016-08-29", "2016-09-20"), class = "factor")), .Names = c("Text.Identifier",
"Date"), row.names = c(NA, 4L), class = "data.frame")

df_1$Date <- as.Date(df_1$Date, format = "%Y-%m-%d")
df_2$Date <- as.Date(df_2$Date, format = "%Y-%m-%d")
View(df_1)
View(df_2)

最佳答案

我建议使用anydate()函数来自 anytime图书馆。它比 lubridate 更适合这种情况。的parse_date_time() ,因为它可以识别日期,而不需要任何用户输入有关条目顺序的信息,例如 ymddmy 。此外,如果数据存储为因子,也没有问题。

这是一个例子:

my_dates <- c("2015-07-12", "2016-05-01", "2016-05-05", "2016-05-09", 
"2016-05-12", "2016-05-18", "2016-08-01", "2016-08-19", "2016-08-29",
"2016-09-20", "5/18/2016", "7/12/2015", "8/29/2016")
my_dates <- as.factor(my_dates)
library(anytime)
anydate(my_dates)
# [1] "2015-07-12" "2016-05-01" "2016-05-05" "2016-05-09" "2016-05-12" "2016-05-18"
# [7] "2016-08-01" "2016-08-19" "2016-08-29" "2016-09-20" "2016-05-18" "2015-07-12"
#[13] "2016-08-29

可以验证输出的类别确实是 Date

class(anydate(my_dates))
#[1] "Date"

而另一个发布的解决方案会生成一个带有不必要时区信息的 POSIX 对象。

关于r - 当输入值可以是不同格式时,如何在 R 中将日期转换为格式 "yyyy-mm-dd",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40942750/

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