-2

我有以下数据框(DF1):

Date             Value   
29/12/2014 8:00  24.940   
29/12/2014 9:00  24.960   
29/12/2014 11:00 25.020 

我想为 DF1$DIFF 添加一个新列,其中包含每行的日期(包括小时数)与其上述日期之间的值差异。这样所需的结果将是:

Date             Value   Diff
29/12/2014 8:00  24.940   
29/12/2014 9:00  24.960    1
29/12/2014 11:00 25.020    2

我尝试使用 as.date 函数,但是,我只得到日期的差异:

> as.Date("2009-10-01 10:00")- as.Date("2009-10-01 9:00")
Time difference of 0 days
4

2 回答 2

3

as.Date最初,如果您想查看小时差异,则不能使用,因为这将丢弃小时信息。而是使用as.POSIXct. 然后,您可以计算差异:

as.POSIXct(strptime("2009-10-01 10:00:00", "%Y-%m-%d %H:%M:%S")) -
as.POSIXct(strptime("2009-10-01 09:00:00", "%Y-%m-%d %H:%M:%S"))

给你Time difference of 1 hours

于 2016-01-10T09:01:08.267 回答
2

尝试使用包lubridate。这是您可以使用的一种方法lubridate

library(lubridate)

difftime(ymd_hm("2009-10-01 10:00"), ymd_hm("2009-10-01 9:00"))
#Time difference of 1 hours

或者

ymd_hm("2009-10-01 10:00") - ymd_hm("2009-10-01 9:00")
#Time difference of 1 hours

另一个例子

difftime(dmy_hm("29/12/2014 11:00"), dmy_hm("29/12/2014 9:00"), units="hours")
#Time difference of 2 hours

或者

ymd_hm("2009-10-01 10:00") - ymd_hm("2009-10-01 9:00")
#Time difference of 1 hours
于 2016-01-10T09:03:58.797 回答