gpt4 book ai didi

r - 在 R 中将日期转换为 as.POSIXct 并减去两个日期

转载 作者:行者123 更新时间:2023-12-04 00:09:44 24 4
gpt4 key购买 nike

我正在尝试在 R 中计算一个日期 - 1(基本上是日期的前一天),当它将它转换为 POSIXct 时,它似乎减去另一个日期?

该列是 POSIXct 类型:

class(df$Date)
[1] "POSIXct" "POSIXt"

这是初始值:

> df[12,"Date"]
[1] "2016-03-09 EST"

如果我只是做 as.Date 并减去一个它工作正常:

as.Date(df[12,"Date"]-1, tz="EST")
[1] "2016-03-08"

但我将它保存回同一列,因此它会自动转换回 as.POSIXct(我认为)。然后我在该专栏中结束了 3 月 7 日。晚上 7 点。如果我在这里输入它,我会得到这个:

as.POSIXct(as.Date(df[12,"Date"]-1, tz="EST"))
[1] "2016-03-07 19:00:00 EST"

我试过使用 America/New York 作为 tz。我试过 as.Date 只围绕 df[12,"Date"] 或围绕包括 -1 在内的整个事物......我不知道该怎么做!

谢谢!

最佳答案

使用as.difftime 取出以时间为单位指定的数量。无论您的数据是 Date 还是 POSIXct 格式,它都会始终如一地工作。例如:

如您所述,这失败了:

x <- as.POSIXct(c("2016-03-09","2016-03-10"), tz="US/Eastern")
#[1] "2016-03-09 EST" "2016-03-10 EST"
x[1] <- as.Date(x[1]-1, tz="US/Eastern")
#[1] "2016-03-07 19:00:00 EST" "2016-03-10 00:00:00 EST"

这个有效:

x <- as.POSIXct(c("2016-03-09","2016-03-10"), tz="US/Eastern")
#[1] "2016-03-09 EST" "2016-03-10 EST"
x[1] <- x[1] - as.difftime(1, units="days")
#[1] "2016-03-08 EST" "2016-03-10 EST"

关于r - 在 R 中将日期转换为 as.POSIXct 并减去两个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37821598/

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