1

我有一个像下面这样的矩阵(第一行是:):

   method       start         i2         i3         i4         i5         i7        
1    "m1"   "17:19:02" "17:19:10" "17:19:18" "17:19:26" "17:19:36" "17:19:47"

因此,在每一行中,我在每个间隔中都有method name然后是start time然后是。我需要计算每个的时间量。我想我需要将格式更改为时间,然后做减号,但我不知道该怎么做。end time i(x)i(x)(start time - i(x) time)

4

1 回答 1

3
#some data
df <- read.table(text='method       start         i2         i3         i4         i5         i7        
1    "m1"   "17:19:02" "17:19:10" "17:19:18" "17:19:26" "17:19:36" "17:19:47"
2    "m2"   "17:19:05" "17:19:10" "17:19:18" "17:19:26" "17:19:36" "17:19:47"',stringsAsFactors=FALSE)

m <- as.matrix(df)


#transform matrix to data.frame
df <- as.data.frame(m,stringsAsFactors=FALSE)

#melt to long format
library(reshape2)
df <- melt(df,id.vars="method")
#transform to date-time
df$value <- as.POSIXct(df$value,"%H:%M:%S",tz="GMT")

#calculate time differences
library(plyr)
ddply(df,.(method),transform,timediff = value-value[variable=="start"])

   method variable               value timediff
1      m1    start 2013-02-11 17:19:02   0 secs
2      m1       i2 2013-02-11 17:19:10   8 secs
3      m1       i3 2013-02-11 17:19:18  16 secs
4      m1       i4 2013-02-11 17:19:26  24 secs
5      m1       i5 2013-02-11 17:19:36  34 secs
6      m1       i7 2013-02-11 17:19:47  45 secs
7      m2    start 2013-02-11 17:19:05   0 secs
8      m2       i2 2013-02-11 17:19:10   5 secs
9      m2       i3 2013-02-11 17:19:18  13 secs
10     m2       i4 2013-02-11 17:19:26  21 secs
11     m2       i5 2013-02-11 17:19:36  31 secs
12     m2       i7 2013-02-11 17:19:47  42 secs
于 2013-02-11T12:12:01.407 回答