「所有者」でグループ化された、さまざまなジョブの「開始」時間と「終了」時間に関するデータがあります。
Data <- data.frame(
job = c(1, 2, 3, 4, 5),
owner = c("name1", "name2", "name1", "name1", "name2"),
Start = as.POSIXct(c("2015-01-01 15:00:00", "2015-01-01 15:01:00", "2015-01-01 15:13:00", "2015-01-01 15:20:00", "2015-01-01 15:39:02"), format="%Y-%m-%d %H:%M:%S"),
End = as.POSIXct(c("2015-01-01 15:11:11", "2015-01-01 15:17:21", "2015-01-01 15:17:00", "2015-01-01 15:31:21", "2015-01-01 15:40:11"), format="%Y-%m-%d %H:%M:%S")
)
所有者ごとに、各所有者のジョブ間のアイドル時間、つまり、あるジョブの「終了」時間と次のジョブの「開始」時間の差を計算したいと考えています。
difftime()
特定の行と異なる列の時間との間のこの時間差を計算するにはどうすればよいですか?
結果は次のようになります。
job, owner, idletime
1, name1, NA
2, name2, NA
3, name1, 1.816667 # End of row 1 minus Start of row 3
4, name1, 3.0 # End of row 3 minus Start of row 4
...