如何解决lubridate [R]:日期与要添加到日期的now之间的差
我在用润滑脂苦苦挣扎
我过去在df $ mydate变量中有一个日期系列,为POSIXct。我想从max(df$mydate)
中减去now()
,然后从该时间间隔中减去2天,即使该时间间隔比该系列的最新日期和今天之间的差短2天。然后,应将获得的时间间隔添加到df $ mydate中的所有日期中,以便将日期块提前到从今天开始的2天结束。
我该如何使用lubridate?
当我尝试将now() - max(df$mydate)
转换为时间间隔时,我得到一个空的时间间隔。因此,我什至没有进入第2步-将时间间隔缩短2天,也没有进入第3步-尝试将这个时间长度添加到我拥有的日期中。
解决方法
您可以使用 base 中的Sys.time()
来获取与 now 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"
的时差,并减去2天。
(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"
数据:
java.lang.NullPointerException
at oracle.jdevimpl.vcs.svn.SVNProfile.canActivate(SVNProfile.java:162)
at oracle.jdevimpl.vcs.generic.GenericClient.fireCanActivate(GenericClient.java:1629)
...
,
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。