我正在尝试在 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/