如何使用不同单位的difftime列

时间:2016-07-28 21:47:20

标签: r dataframe

我有一个包含两个时间字段的数据框。我试图在这两次之间找到差异。我面临的问题是第一行的单位在所有行中全面使用。但价值在不同的单位。

以下是一个例子:

myt <- strptime("7/15/2016  7:51:33 AM", "%m/%d/%Y %I:%M:%S %p") - 
       strptime("7/15/2016  7:51:32 AM", "%m/%d/%Y %I:%M:%S %p")

myt[2] <- strptime("7/15/2016  7:53:32 AM", "%m/%d/%Y %I:%M:%S %p") - 
          strptime("7/15/2016  7:51:32 AM", "%m/%d/%Y %I:%M:%S %p")

myt

#Time differences in secs
#[1] 1 2

myt[1]
#Time difference of 1 secs

myt[2]
#Time difference of 2 secs

在这种情况下,myt[2]的答案是2分钟而不是2秒。是否可能

  1. 有不同的行有不同的单位吗?
  2. 如果不是至少具有给定单位的正确值(在这种情况下为120秒)

2 个答案:

答案 0 :(得分:0)

哇。我不知道这是发生了什么。

一种可能的解决方案是使用difftime()并指定您想要的时差“单位”。

> myt <- difftime(strptime("7/15/2016 7:51:33 AM", "%m/%d/%Y %I:%M:%S %p"), 
                  strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p"), 
                  units = "secs")
> myt[2] <- difftime(strptime("7/15/2016 7:53:32 AM", "%m/%d/%Y %I:%M:%S %p"),
                     strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p"), 
                     units = "secs")
> myt
Time differences in secs
[1]   1 120

感谢您指出这一点。我是datetime / POSIXct的新手,我不会意识到这个

答案 1 :(得分:0)

您可以使用多列,还是不适用于您的问题?如果它可以工作:

myt <- data.frame(strptime("7/15/2016 7:51:33 AM", "%m/%d/%Y %I:%M:%S %p") - strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p"))
myt[,2] <- strptime("7/15/2016 7:53:32 AM", "%m/%d/%Y %I:%M:%S %p") - strptime("7/15/2016 7:51:32 AM", "%m/%d/%Y %I:%M:%S %p")
colnames(myt) <- c("time1","time2")
myt