减去R中的时间

我最近开始在R中工作,通过Excel文件进​​行操作和查询。 我有一个名为my_File.csv保存到我的桌面的Excel文件。 这是我到目前为止:

fileOpened <- sprintf("/Users/JimToby/Desktop/my_File.csv") myFile <- as.data.frame(table(fileOpened[, c('user', 'time', 'event')])) 

myFile给我留下了一张如下所示的表格:

用户| 时间|

使用1 | 2011-07-25 13:08 |

使用1 | 2011-08-06 2:37 |

使用2 | 2011-07-25 13:08 |

…..

我想要做的是添加另一列,每个用户有不同的时间。 例如,该列可以被称为timeDiff,而对于use1,只有一个结果,2011-08-06 2:37 – 2011-07-25 13:08。 我将如何计算这个并将其合并到我的表中?

提前致谢。

一旦您将数据转换为实际的时间格式,您可以减去。 您的示例数据只有user2的开始,所以我添加了一个结束时间,以便有一个真实的示例。 我认为你有时间作为string,并且你想把时间差存储回相同的data.frame中

 myFile = read.table(text='user time use1 "2011-07-25 13:08" use1 "2011-08-06 2:37" use2 "2011-07-25 13:08" use2 "2011-08-04 3:45"', header=TRUE, stringsAsFactors=FALSE) T2 = as.POSIXct(myFile$time) EndTime = seq(2,length(T2),2) myFile$timeDiff[EndTime] = T2[EndTime] - T2[EndTime-1] myFile user time timeDiff 1 use1 2011-07-25 13:08 NA 2 use1 2011-08-06 2:37 11.561806 3 use2 2011-07-25 13:08 NA 4 use2 2011-08-04 3:45 9.609028 

请注意,由此产生的时间差是几天。

这里是data.table shift解决scheme:

 dt <- read.table(text = "user | time use1 |2011-07-25 13:08 use1 |2011-08-06 2:37 use2 |2011-07-25 13:08", header = T, sep = "|") library(data.table) dt <- data.table(dt) dt[, time := as.POSIXct(time)] dt[, time.diff := time - shift(time, type = "lag"), by = user] # user time time.diff # 1: use1 2011-07-25 13:08:00 NA secs # 2: use1 2011-08-06 02:37:00 11.56181 secs # 3: use2 2011-07-25 13:08:00 NA secs