0

R から時間の列を減算することについて質問があります。観測時間の合計を取得するには、相互に減算する必要がある 3 つの列があります。私はする必要があります (TIMEEND-TIMESTART)-TIMEOUT

を使用するOBSTIME <- difftime(pipers$TIMEEND, pipers$TIMESTART, units = "hours")と、最初の部分が得られますが、これからどのように を減算しますかTIMEOUT。または、3 つの列すべてを同時に減算する方法はありますか? これは、これを行う正しい形式ですか?

助けてくれてありがとう!

ミシェル

$ TIMESTART : POSIXct, format: "2013-10-28 10:30:00" "2013-10-28 14:50:00" "2013-10-28 14:50:00" ...
 $ TIMEEND   : POSIXct, format: "2013-10-28 12:30:00" "2013-10-28 16:50:00" "2013-10-28 16:50:00" ...
 $ TIMEOUT   : POSIXct, format: "2013-10-28 00:04:00" "2013-10-28 00:10:00" "2013-10-28 00:10:00" ..
4

1 に答える 1

0

TIMEOUTは元々、観察試合の「休憩」であるピリオドを指していたと思いますが、これは何らかの形で に変換されていPOSIXctます。これで、日付として表示されます。私の推測は現実と関係があるので、次のようなことを試してみてください。ここでは、関数hourminutefrom パッケージを使用しlubridateて、「out」オブジェクトの関連する (私の推測では...) 部分を抽出します。

library(lubridate)

# using your first set of times/periods as example
end <- as.POSIXct("2013-10-28 12:30:00")
start <- as.POSIXct("2013-10-28 10:30:00")
out <- as.POSIXct("2013-10-28 00:04:00")

# calculate total duration as difference between 'end' and 'start', in units minutes
tot <- as.numeric(difftime(end, start, units = "mins")) 

# calculate break in minutes using hour and minute components extracted from 'out'.
out_min <- (hour(out) * 60 + minute(out))

# calculate net duration of observation
tot - out_min
# [1] 116

もちろん、'TIMEOUT' に追加の時間単位 (秒や日など) がある場合は、これを調整する必要があります。

于 2013-10-28T18:57:29.737 に答える