10

lubridateの簡単な質問-hmsオブジェクトを1日の始まりから適切な秒数に変換したいと思います。

例えば

library(lubridate)
hms("12:34:45")

次に、12時間、34分、45秒の長さを秒単位で正確に知りたい

のような明白な何か

seconds(hms("12:34:45"))

戻るだけ

45s

それは私が望むものではありません。これらのhms値を秒に変換するにはどうすればよいですか?ルブリデートを使いたい

4

2 に答える 2

33
R>lubridate::period_to_seconds(hms("01:00:00")) 

00:00:00からの数値カウントとして、または上記の場合、予想される3600秒を示します。

R>period_to_seconds(hms("12:34:45")) 
于 2012-12-09T19:54:36.637 に答える
11

どのパッケージを使用するかは関係ありません。日付/日時オブジェクトは、エポックからの秒数のPOSIXct表現に変換されます。したがって、ベースRで実行することもできます。したがって、ここISOdatetime()では、今日を使用して、任意の日にデプロイします。

R> difftime(ISOdatetime(2012,7,2,12,34,45), ISOdatetime(2012,7,2,0,0,0))
Time difference of 12.5792 hours

したがって、秒が必要です。

R> difftime(ISOdatetime(2012,7,2,12,34,45), ISOdatetime(2012,7,2,0,0,0), 
+          unit="secs")
Time difference of 45285 secs

そして、数字にキャストすることができます:

R> as.numeric(difftime(ISOdatetime(2012,7,2,12,34,45), +
                       ISOdatetime(2012,7,2,0,0,0), unit="secs"))
[1] 45285

編集: そして潤滑剤に戻ると、これは間違いなくバグです:

> hms("12:34:45") - hms("00:00:00")
[1] 12 hours, 34 minutes and 45 seconds
R> as.numeric(hms("12:34:45") - hms("00:00:00"))
[1] 45
R>
于 2012-07-02T17:41:47.340 に答える