如何找到r中数据集中两列中存在的值之间的时间差

时间:2017-06-03 06:06:44

标签: r dataframe

问题:下面共享的数据包含两个包含整数格式时间的列,但我必须将其转换为适当的时间格式,即hh:mm,并在时间之间做差异并在分钟内显示

对于Ex:value1:1715中的数据应转换为17:15值2:1709应转换为17:09

一旦转换,应计算差值,如果值2时间超过2分钟,如果是这种情况,则值应返回为1,并且在值2值1延迟小于2分钟的情况下它应该返回0,如果value2-value1返回负值,它也应该返回0,如果差值为0,则应该设置为0。

对于上述数据,值应返回0,因为value2-value 1返回负值。

structure(list(originaldata.df.schedtime = c(1455L, 1640L, 1245L, 
1715L, 1039L), originaldata.df.deptime = c(1455L, 1640L, 1245L, 
1709L, 1035L)), .Names = c("originaldata.df.schedtime", "originaldata.df.deptime"
), row.names = c(NA, 5L), class = "data.frame")

对于mydataset

中提到的数据,预期输出应该如下所示
Delay(>2 min)
0 0 0 0 1 0 0

1 个答案:

答案 0 :(得分:1)

您需要先将列转换为正确的日期时间,

d[] <- lapply(d, function(i) strptime(i, format = '%H%M'))

difftime(d$originaldata.df.schedtime, 
        d$originaldata.df.deptime, units = 'mins')

#Time differences in mins
#[1] 0 0 0 6 4

#or

as.integer(difftime(d$originaldata.df.schedtime, 
                    d$originaldata.df.deptime, units = 'mins') > 2)

#[1] 0 0 0 1 1