我想计算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
有人可以告诉我怎么做吗?如果您有其他/更好的建议如何保持结果,将不胜感激 非常感谢提前! 秘书科
答案 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)...