## 如何计算R中的时间差？内容来源于 Stack Overflow，并遵循CC BY-SA 3.0许可协议进行翻译与使用

• 回答 (1)
• 关注 (0)
• 查看 (23)

```   start.date start.time   end.date end.time
1  2012-07-13   15:01:32 2012-07-13 15:02:42
2  2012-07-05   18:26:31 2012-07-05 18:27:19
3  2012-07-14   20:23:21 2012-07-14 20:24:11
4  2012-07-29   16:09:54 2012-07-29 16:10:48
5  2012-07-21   14:58:32 2012-07-21 15:00:17
6  2012-07-04   15:36:31 2012-07-04 15:37:11
7  2012-07-22   18:28:31 2012-07-22 18:28:50
8  2012-07-09   21:08:42 2012-07-09 21:09:02
9  2012-07-05   09:44:52 2012-07-05 09:45:05
10 2012-07-02   18:50:47 2012-07-02 18:51:38```

`mbehave11\$diff.time <- difftime(mbehave11\$end.time, mbehave11\$start.time, units="secs")`

```Error in as.POSIXlt.character(x, tz, ...) :
character string is not in a standard unambiguous format
1: In is.na.POSIXlt(strptime(xx, f <- "%Y-%m-%d %H:%M:%OS", tz = tz)) :
Reached total allocation of 1535Mb: see help(memory.size)```

(A)阅读你的数据：

```R> dat <- read.table(textConnection("start.date start.time end.date end.time
2012-07-13   15:01:32 2012-07-13 15:02:42
2012-07-05   18:26:31 2012-07-05 18:27:19
2012-07-14   20:23:21 2012-07-14 20:24:11"), header=TRUE) ```

(B)就一项意见开展工作：

``` R>  strptime( paste(dat[,1], dat[,2]), "%Y-%m-%d %H:%M:%S")
[1] "2012-07-13 15:01:32" "2012-07-05 18:26:31" "2012-07-14 20:23:21" ```

(C)在集合上工作，转换为数字：

``` R> as.numeric(difftime(strptime(paste(dat[,1],dat[,2]),"%Y-%m-%d %H:%M:%S"),
strptime(paste(dat[,3],dat[,4]),"%Y-%m-%d %H:%M:%S")))
[1] -70 -48 -50
R> ```