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

标签 r date datetime

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

相关文章:

python - 使用 Pandas Dataframes 根据间隙长度计算事件日期

python-3.x - 在Python中将iso格式的日期时间字符串转换为日期时间对象

r - Quanteda 包,朴素贝叶斯 : How can I predict on different-featured test data?

r - data.table:对两个维度进行切片,字符串列列表

r - 如何对分组的行进行排序,同时将重复项保留在一起

java - 如何将日期格式化为大写?

mysql - 不正确的日期时间值 '0000-00-00 00:00:00' - Date_Sub() in Having

R:Shiny - 如何重新排列 dateRangeInput() 小部件?

matlab - 在 matlab 中扩展向量类

mysql - 如何获得真实日期而不是实际日期