34

私は現在、作成中のパッケージの日付と時刻をいじっています。

この投稿に出くわしたことで、contrib パッケージに目を向ける前に基本的な R 機能で何かができるかどうかをチェックすることは一般的に悪い考えではないことを改めて思い出しました。

POSIXctしたがって、基本R機能を使用してクラスの日付を丸めることは可能ですか?

私がチェックしました

methods(round)

「だけ」が私にくれたもの

[1] round.Date      round.timeDate*

   Non-visible functions are asterisked

これがやりたいことです(疑似コード)

x <- as.POSIXct(Sys.time())
[1] "2012-07-04 10:33:55 CEST"

round(x, atom="minute")
[1] "2012-07-04 10:34:00 CEST"

round(x, atom="hour")
[1] "2012-07-04 11:00:00 CEST"

round(x, atom="day")
[1] "2012-07-04 CEST"

これはtimeDatelubridateなどで実行できることはわかっていますが、パッケージの依存関係を抑えたいと思います。そのため、それぞれのパッケージのソース コードを確認する前に、誰かがすでにこのようなことを行っているかどうかを尋ねてみようと思いました。

4

3 に答える 3

46

baseこれをしなけれround.POSIXtばなりません。なぜそれが思い付かないのか分かりませんmethods

x <- as.POSIXct(Sys.time())
x
[1] "2012-07-04 10:01:08 BST"
round(x,"mins")
[1] "2012-07-04 10:01:00 BST"
round(x,"hours")
[1] "2012-07-04 10:00:00 BST"
round(x,"days")
[1] "2012-07-04"
于 2012-07-04T09:04:42.560 に答える
17

このテーマ withでは、および関数lubridateも調べてください。ceiling_date()floor_date()

x <- as.POSIXct("2009-08-03 12:01:59.23")
ceiling_date(x, "second")
# "2009-08-03 12:02:00 CDT"
ceiling_date(x, "hour")
# "2009-08-03 13:00:00 CDT"
ceiling_date(x, "day")
# "2009-08-04 CDT"
ceiling_date(x, "week")
# "2009-08-09 CDT"
ceiling_date(x, "month")
# "2009-09-01 CDT"
于 2013-01-23T05:18:26.313 に答える