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 に答える