文字の日時を非常に効率的に読み取ることができる機能にfasttimeパッケージを使用しています。fastPOSIXct
私の問題は、GMT で表現されている文字の日時しか読み取れないことです。
R) fastPOSIXct("2010-03-15 12:37:17.223",tz="GMT") #very fast
[1] "2010-03-15 12:31:16.223 GMT"
R) as.POSIXct("2010-03-15 12:37:17.223",tz="GMT") #very slow
[1] "2010-03-15 12:31:16.223 GMT"
ここで、「アメリカ/モントラル」タイムゾーンで表現された日時を含むファイルがあるとします。計画は、それらをロードし (暗黙のうちに GMT であると偽って)、その後、基になる値を変更せずにタイムゾーン属性を変更することです。
別の投稿で参照されているこの関数を使用する場合:
forceTZ = function(x,tz){
return(as.POSIXct(as.numeric(x), origin=as.POSIXct("1970-01-01",tz=tz), tz=tz))
}
バグが発生しています...
R) forceTZ(as.POSIXct("2010-03-15 12:37:17.223",tz="GMT"),"America/Montreal")
[1] "2010-03-15 13:37:17.223 EDT"
…そうであってほしいから
R) as.POSIXct("2010-03-15 12:37:17.223",format="%Y-%m-%d %H:%M:%OS",tz="America/Montreal")
[1] "2010-03-15 12:37:17.223 EDT"
回避策はありますか?
編集:私は知ってlubridate::force_tz
いますが、遅すぎます(もう使用する必要はありfasttime::fastPOSIXct
ません)