lubridate [R]:日期和要添加到日期的 now() 之间的差异
lubridate [R]: difference between a date and now() to be added to a date
我在 lubridate 方面有点挣扎
我在 df$mydate 变量中有一个过去的日期系列作为 POSIXct。我想用 max(df$mydate)
从 now()
中减去它,然后从该时间间隔中再减去 2 天 - 即使间隔比系列的最新日期与今天之间的差异短 2 天。然后应将获得的时间间隔添加到 df$mydate 中的所有日期,以便日期块从今天提前到过去 2 天结束。
如何使用 lubridate 执行此操作?
当我尝试将 now() - max(df$mydate)
转换为间隔时,我得到一个空间隔。所以我什至没有进入第 2 步 - 将间隔缩短 2 天和第 3 步 - 然后尝试将这个时间长度添加到我拥有的日期。
您可以使用 difftime
从 base 得到与 now Sys.time()
的时差并减去 2天。
x <- x + (difftime(Sys.time(), max(x), units = "days") - 2)
x
#[1] "2020-09-11 10:32:20 CEST" "2020-09-12 10:32:20 CEST"
#[3] "2020-09-13 10:32:20 CEST" "2020-09-14 10:32:20 CEST"
Sys.time()
#[1] "2020-09-16 10:32:20 CEST"
数据:
(x <- seq(as.POSIXct("2000-01-01 12:00:00"), length.out = 4, by = "days"))
#[1] "2000-01-01 12:00:00 CET" "2000-01-02 12:00:00 CET"
#[3] "2000-01-03 12:00:00 CET" "2000-01-04 12:00:00 CET"
idee有lubridate就是帮你搞定所有时间间隔和日期之间的转换,你不用考虑。这个简单的代码完全可以满足您的需求。
library(lubridate)
my_date <-as.POSIXlt(paste0("2009-08-",1:10))
time_diff <- now() - max(my_date)
time_diff_short = time_diff - 2
my_date + time_diff_short
我发现您需要 my_date 的格式为 POSIXlt
我在 lubridate 方面有点挣扎
我在 df$mydate 变量中有一个过去的日期系列作为 POSIXct。我想用 max(df$mydate)
从 now()
中减去它,然后从该时间间隔中再减去 2 天 - 即使间隔比系列的最新日期与今天之间的差异短 2 天。然后应将获得的时间间隔添加到 df$mydate 中的所有日期,以便日期块从今天提前到过去 2 天结束。
如何使用 lubridate 执行此操作?
当我尝试将 now() - max(df$mydate)
转换为间隔时,我得到一个空间隔。所以我什至没有进入第 2 步 - 将间隔缩短 2 天和第 3 步 - 然后尝试将这个时间长度添加到我拥有的日期。
您可以使用 difftime
从 base 得到与 now Sys.time()
的时差并减去 2天。
x <- x + (difftime(Sys.time(), max(x), units = "days") - 2)
x
#[1] "2020-09-11 10:32:20 CEST" "2020-09-12 10:32:20 CEST"
#[3] "2020-09-13 10:32:20 CEST" "2020-09-14 10:32:20 CEST"
Sys.time()
#[1] "2020-09-16 10:32:20 CEST"
数据:
(x <- seq(as.POSIXct("2000-01-01 12:00:00"), length.out = 4, by = "days"))
#[1] "2000-01-01 12:00:00 CET" "2000-01-02 12:00:00 CET"
#[3] "2000-01-03 12:00:00 CET" "2000-01-04 12:00:00 CET"
idee有lubridate就是帮你搞定所有时间间隔和日期之间的转换,你不用考虑。这个简单的代码完全可以满足您的需求。
library(lubridate)
my_date <-as.POSIXlt(paste0("2009-08-",1:10))
time_diff <- now() - max(my_date)
time_diff_short = time_diff - 2
my_date + time_diff_short
我发现您需要 my_date 的格式为 POSIXlt