gpt4 book ai didi

r - 如何使用 R as.POSIXct 处理混合精度日期

转载 作者:行者123 更新时间:2023-12-04 23:35:31 25 4
gpt4 key购买 nike

我有一系列日期的列表,精度不一。大多数格式为“1930-02-06T10:00:00”,但有一些格式为“2130-02-06”,我想将其视为 2130-02-06T00:00:00。

当我使用
df$date <- as.POSIXct(df$date,tz=Sys.timezone())
我从数据中丢失了时间,因为某些日期时间缺少时间。我可以写一个小转换例程

fixDateTime <- function (s) {
if(nchar(s) == 10) {
return (paste(s, "00:00:00"));
} else {
return (str_replace(s,"T", " "));
}
}

然后做
df$DATET <- as.POSIXct(fixDateTime(df$date),tz=Sys.timezone())

但这不起作用,因为 fixDateTime 实际上给定了一个数组,而我不知道如何适应它。我不确定用哪种方法来解决这个问题。 (而且我确定这表明我是 R 的新手)

最佳答案

您可以使用您的 fixDateTime如果您使用 ifelse 的功能它可以处理向量而不是 if/else这适用于标量。将所有内容保留在基础 R 中,我们可以做到

fixDateTime <- function (s) {
ifelse(nchar(s) == 10, paste(s, "00:00:00"), sub("T", " ", s))
}

然后在 as.POSIXct 中使用它
as.POSIXct(fixDateTime(x), tz = "UTC")
#[1] "1930-02-06 10:00:00 UTC" "2130-02-06 00:00:00 UTC"

数据
x <- c("1930-02-06T10:00:00", "2130-02-06")

关于r - 如何使用 R as.POSIXct 处理混合精度日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58869576/

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