2015-06-22 15 views
1

我成功减去了df1(下)的两个POSIXct列。但是,由于所有行的时差都大于1小时,因此R会以小时为单位给出结果。我知道这是有道理的,但是有没有直接的方法让它返回分钟呢?减去r中的时间,强制结果的单位为分钟

df1 <- data.frame(time.stamp1 = c("2015-01-05 15:00:00", "2015-01-05 16:00:00", "2015-01-05 18:00:00", "2015-01-05 19:00:00", "2015-01-05 20:00:00"), 
        time.stamp2 = c("2015-01-05 16:00:00", "2015-01-05 17:00:00", "2015-01-05 20:00:00", "2015-01-05 20:00:00", "2015-01-05 22:00:00")) 

df1$time.stamp1 <- as.POSIXct(strptime(df1$time.stamp1, "%Y-%m-%d %H:%M:%S"))     
df1$time.stamp2 <- as.POSIXct(strptime(df1$time.stamp2, "%Y-%m-%d %H:%M:%S"))     

df1$time.diff <- df1$time.stamp2 - df1$time.stamp1 

当前结果

> df1 
      time.stamp1   time.stamp2 time.diff 
1 2015-01-05 15:00:00 2015-01-05 16:00:00 1 hours 
2 2015-01-05 16:00:00 2015-01-05 17:00:00 1 hours 
3 2015-01-05 18:00:00 2015-01-05 20:00:00 2 hours 
4 2015-01-05 19:00:00 2015-01-05 20:00:00 1 hours 
5 2015-01-05 20:00:00 2015-01-05 22:00:00 2 hours 

所需的结果

> df1 
      time.stamp1   time.stamp2 time.diff 
1 2015-01-05 15:00:00 2015-01-05 16:00:00 60 mins 
2 2015-01-05 16:00:00 2015-01-05 17:00:00 60 mins 
3 2015-01-05 18:00:00 2015-01-05 20:00:00 120 mins 
4 2015-01-05 19:00:00 2015-01-05 20:00:00 60 mins 
5 2015-01-05 20:00:00 2015-01-05 22:00:00 120 mins 

非常感谢

+2

'units(df1 $ time.diff)< - “mins”' –

回答

3

您可以difftime

df1$time.diff <- with(df1, difftime(time.stamp2, time.stamp1, unit='min')) 
df1 
#   time.stamp1   time.stamp2 time.diff 
#1 2015-01-05 15:00:00 2015-01-05 16:00:00 60 mins 
#2 2015-01-05 16:00:00 2015-01-05 17:00:00 60 mins 
#3 2015-01-05 18:00:00 2015-01-05 20:00:00 120 mins 
#4 2015-01-05 19:00:00 2015-01-05 20:00:00 60 mins 
#5 2015-01-05 20:00:00 2015-01-05 22:00:00 120 mins 
尝试