3

Zoo オブジェクトのインデックスで as.Date を使用する必要があります。日付の一部は BST にあるため、変換すると、これらのエントリ (のみ) で 1 日が失われます。1 時間の違いや、日付の時刻の部分についてはまったく気にしません。表示される日付が同じままであることを確認したいだけです。これはそれほど難しいことではないと思いますが、管理できません。誰か助けてくれませんか?

class(xtsRet)
#[1] "xts" "zoo"

index(xtsRet)
#[1] "2007-07-31 BST" "2007-08-31 BST" "2007-09-30 BST" "2007-10-31 GMT"

class(index(xtsRet))
#[1] "POSIXt"  "POSIXct"

index(xtsRet) <- as.Date(index(xtsRet))

index(xtsRet)
#[1] "2007-07-30" "2007-08-30" "2007-09-29" "2007-10-31"

最小限の再現可能な例 (zooパッケージを必要としない):

my_date <- as.POSIXct("2007-04-01") # Users in non-UK timezone will need to
                                    # do as.POSIXct("2007-04-01", "Europe/London")
my_date
#[1] "2017-04-01 BST"

as.Date(my_date)
#[1] "2017-03-31"
4

3 に答える 3

5

次のサンプル データがあるとします。

library(zoo)
x <- as.POSIXct("2000-01-01", tz = "GMT")

次に、これらのいずれかが必要かどうかを確認します。

# use current time zone
as.Date(as.character(x, tz = ""))

# use GMT
as.Date(as.character(x, tz = "GMT"))

# set entire session to GMT
Sys.setenv(TZ = "GMT")
as.Date(x)

また、 R News 4/1の日付と時刻に関する記事"BST"の代わりに試してみてください。"GMT"

于 2012-01-09T13:39:23.127 に答える
4

オブジェクトをオフセットして、POSIX真夜中にならないようにすることができます。1 時間 (3600 秒) で十分です。

d <- as.POSIXct(c("2007-07-31","2007-08-31","2007-09-30","2007-10-31"))
d
[1] "2007-07-31 BST" "2007-08-31 BST" "2007-09-30 BST" "2007-10-31 GMT"

as.Date(d)
[1] "2007-07-30" "2007-08-30" "2007-09-29" "2007-10-31"
as.Date(d+3600)
[1] "2007-07-31" "2007-08-31" "2007-09-30" "2007-10-31"
于 2012-01-09T13:41:33.267 に答える