R与lubridate有时间差异

时间:2017-03-23 22:51:41

标签: r lubridate

以下是我的一个数据框

中的列
7/1/2016 2:53
7/1/2016 20:56
7/2/2016 20:58
7/2/2016 21:57

我一直在使用lubridate并且非常好,但我想知道是否有办法1)删除日期以便我只有时间如此喜欢这个

2:53
20:56
20:58
21:57

然后也从某个时间得到差异,比如8:10 pm或20:10所以它就像这样

 -18:17
0:46
 0:48
1:47

然后能够自己获得小时或分钟值。

2 个答案:

答案 0 :(得分:1)

首先将列转换为正确的日期时间 重新格式化日期时间以将指定时间添加回基准日期 与众不同。

dat$newdate <- as.POSIXct(dat$V1, format="%d/%m/%Y %H:%M")
dat$newdate - as.POSIXct(format(dat$newdate, "%F 20:10"))
#Time differences in mins
#[1] -1037    46    48   107

数据是:

dat  <- read.csv(text="7/1/2016 2:53
7/1/2016 20:56
7/2/2016 20:58
7/2/2016 21:57", header=FALSE)

答案 1 :(得分:1)

使用lubridate:

library("lubridate")

dat1 <- dmy_hm("7/1/2016 2:53")
dat2 <- dmy_hm("7/1/2016 8:09")

提取小时:min just:

strftime(dat1, format="%H:%M:%S", tz= "UTC")

获得小时和分钟使用:

hour(dat1)
minute(dat1)

操作示例:

dat2-dat1