2017-03-23 31 views
0

这里是我的一个数据列[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或20:10所以它这样

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

然后可以通过它自己获得小时或分钟值。

回答

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) 
+0

我怎么做这与lubridate? – Shah

+0

@Shah - 不知道,我从来没有用过它。 – thelatemail

+0

我应该发布另一个问题,询问如何使用lubridate做到这一点? – Shah

1

随着lubridate:

library("lubridate") 

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

提取小时:分钟刚:

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

得到的小时和分钟使用:

hour(dat1) 
minute(dat1) 

操作示例:

dat2-dat1