gpt4 book ai didi

r - 使用 as.Date 和 tryFormats 解析不同格式的日期

转载 作者:行者123 更新时间:2023-12-02 07:59:31 24 4
gpt4 key购买 nike

我有一个带有两种不同格式日期的变量( "%Y-%m-%d""%m/%d/%Y" ):

dput(df)
structure(1:8, .Label = c("2019-04-07", "2019-04-08", "2019-04-09",
"2019-04-10", "7/29/2019", "7/30/2019", "7/31/2019", "8/1/2019"
), class = "factor")

# [1] 2019-04-07 2019-04-08 2019-04-09 2019-04-10 7/29/2019 7/30/2019 7/31/2019 8/1/2019
# 8 Levels: 2019-04-07 2019-04-08 2019-04-09 2019-04-10 7/29/2019 7/30/2019 ... 8/1/2019
我尝试使用 as.Date 解析日期与 tryFormats
df <- as.character(df)
d <- as.Date(df, tryFormats = c("%Y-%m-%d", "%m/%d/%Y"))
转换第一个格式结构,然后返回 NA对于第二种格式结构。如果我分别运行这两种格式,它们看起来不错:
t1 <- as.Date(df, format = "%Y-%m-%d")
t2 <- as.Date(df, format = "%m/%d/%Y")

t1
# [1] "2019-04-07" "2019-04-08" "2019-04-09" "2019-04-10" NA
# [6] NA NA NA

t2
# [1] NA NA NA NA "2019-07-29"
# [6] "2019-07-30" "2019-07-31" "2019-08-01"
有什么建议?我查看了其他回复,但没有找到任何好的 tryFormats 示例/问题似乎可以解决这个问题。

最佳答案

tryFormats只会选择一种给定的格式。在您的情况下,您可以单独转换它们,就像您已经完成的那样。

d <- as.Date(df,format="%Y-%m-%d")
d[is.na(d)] <- as.Date(df[is.na(d)],format="%m/%d/%Y")
d
#[1] "2019-04-07" "2019-04-08" "2019-04-09" "2019-04-10" "2019-07-29"
#[6] "2019-07-30" "2019-07-31" "2019-08-01"

关于r - 使用 as.Date 和 tryFormats 解析不同格式的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59254390/

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