R中行之间的日期时间差异

时间:2013-03-19 17:01:25

标签: r

我想计算R中的时间差(增量时间)。时间戳存储在两列数据帧中,时间为日期时间(年 - 月 - 日小时:分:秒。毫秒),例如,前三行:

c_id    c_time
6875    2012-08-15 00:00:40.169
6874    2012-08-15 00:01:40.055
6876    2012-08-15 00:02:40.542

我希望输出一个有差异的列,例如

c_diff
0
00:01:0.886
00:01:0.487

有人可以告诉我怎么做吗?如果您有其他/更好的建议如何保持结果,将不胜感激 非常感谢提前! 秘书科

2 个答案:

答案 0 :(得分:7)

试试这个(我假设您的数据位于名为data.frame的{​​{1}}中)并且您希望第一个时间戳与所有后续时间戳之间存在差异:

mydf

修改

但是如果你想要后续时间戳之间的差异,你需要扭转你的观察(因为第一轮你得到time1 - time2将是负面的),所以你可以改为使用:

c_time <- as.POSIXlt( mydf$c_time )
difftime( c_time[1] , c_time[2:length(c_time)] )
  #Time differences in secs
  #[1]  -59.886 -120.373
  #attr(,"tzone")
  #[1] ""

答案 1 :(得分:1)

我不会给你完整的答案,但这会帮助你几乎到达那里:

x="2012-07-11 04:22:40.169"
datex=strptime(x,format='%Y-%m-%d %H:%M:%S') #this converts your date string 
#into a date value recognized in r

y="2012-08-15 08:32:40.169"
datey=strptime(y,format='%Y-%m-%d %H:%M:%S')

time_diff=as.numeric(difftime(datey,datex)) #in decimal days
>35.17361

从十进制日开始,您可以将其转换回您想要的任何时间格式,但根据您想要使用的格式,您可能希望将其保留为数字形式(可能以十进制小时为单位,乘以time_diff 24)...