#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