2017-05-31 10 views
1

openxlsxを使用して、大規模なExcelファイルを時系列データで読み込もうとしています。私は、数値ベクトルの引数が一定量の要素を超えると、convertToDateTimeが時間の省略を開始することを発見しました。私のコードは次のようになります。Openxlsx convertToDateTimeは大きなデータセットで時間を省略します

ts <- readWorkbook(my.wb, sheet = as.character(r[["dSheet"]]), 
       startRow = 2, cols = 1, 
       colNames=FALSE, detectDates=FALSE) 
colnames(ts) <- c("dt") 
> head(convertToDateTime(ts$dt[1:30830])) 
[1] "2016-11-23 15:20:00 MST" "2016-11-23 15:24:59 MST" 
[3] "2016-11-23 15:30:00 MST" "2016-11-23 15:34:59 MST" 
[5] "2016-11-23 15:40:00 MST" "2016-11-23 15:45:00 MST" 

> head(convertToDateTime(ts$dt[1:30840])) 
[1] "2016-11-23 MST" "2016-11-23 MST" "2016-11-23 MST" "2016-11-23 MST" 
[5] "2016-11-23 MST" "2016-11-23 MST" 

サイド質問:あなたは私の元のコードで素子#2(2016年11月23日15時24分59秒)を見れば、これは実際には午後3時25分にする必要があります。この問題を解決するための簡単な方法があれば

ここで作業例だ...私に知らせてください。

>library("openxlsx") 
>dates <- runif(31000, 41000, 42000) 
>head(convertToDateTime(dates[1:5000])) 

[1] "2013-05-29 09:34:28 MDT" "2014-07-01 03:52:13 MDT" 
[3] "2012-06-02 09:27:47 MDT" "2012-05-06 13:42:04 MDT" 
[5] "2014-09-26 04:50:36 MDT" "2013-10-26 03:14:00 MDT" 

> head(convertToDateTime(dates[1:10000])) 
[1] "2013-05-29 MDT" "2014-07-01 MDT" "2012-06-02 MDT" "2012-05-06 MDT" 
[5] "2014-09-26 MDT" "2013-10-26 MDT" 

は、この動作のためにそこに修正されていますし、(実装完全に異なるアプローチをとることに推薦します変換)?

ありがとうございました!

答えて

0

Converting numeric time to datetime POSIXct format in Rで私の問題の回避策が見つかりました。単純に秒単位の時間スパンを取得するために、3600 * 24で優れて時間を乗算し、as.POSIXCTを使用すると、正常に動作します:これはとても素晴らしい作品以来

> dates <- runif(30000, 41000, 42000) 
> ts1 <- convertToDateTime(dates) 
> ts2 <- as.POSIXct(dates*3600*24, tz="GMT", origin = "1900-01-01") 
> head(ts1) 
[1] "2013-10-04 MDT" "2012-04-04 MDT" "2014-06-12 MDT" "2013-01-24 MST" 
[5] "2012-09-12 MDT" "2014-11-11 MST" 
> head(ts2) 
[1] "2013-10-06 02:43:24 GMT" "2012-04-06 11:59:54 GMT" 
[3] "2014-06-14 16:43:06 GMT" "2013-01-26 00:25:17 GMT" 
[5] "2012-09-14 07:26:47 GMT" "2014-11-13 18:52:03 GMT" 

が、私はopenxlsx」convertToDateTime機能ワークフローの利点を理解していません。 as.POSIXctをopenxlsx 'getDateOrigin()と組み合わせて使用​​することで、私の元の質問で述べた丸めの問題も解決します。

関連する問題