如何找到R中日期之间的小时差
How to find difference in hours between dates in R
我有以下数据框 (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
最初,如果您想查看小时差异,则不能使用 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
.
尝试使用包 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
我有以下数据框 (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
最初,如果您想查看小时差异,则不能使用 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
.
尝试使用包 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