1

XLConnect パッケージを使用して、複数の Excel スプレッドシートをループして R に読み込む R スクリプトがあります。個々のスプレッドシートは 1 つの大きなデータ フレームに結合され、Excel でさらに使用するために .csv ファイルとして書き出されます。

newDf <- readWorksheetFromFile(filename,sheet=newid,header=TRUE,
                            startRow=1,endRow=17,startCol=1,endCol=6) 

Excel ファイルには、HH:MM:SS.000 というカスタム形式の時間値の列が 1 つあります。

つまり、00:18:06.264

結果の csv ファイルを開くと、この列の値は次のように表示されます。

1899-12-31 00:06:18

後で日付を簡単に削除できますが (これは望ましくありません)、私の問題は、秒の小数レベルが失われることです。私はそれらを保持する必要があります。カスタムの時間形式をそのまま維持する正しい方法は何ですか?

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

4

2 に答える 2

0

バージョン 0.2-10 以降、 XLConnectは実際に Excel の日付/時刻のミリ秒部分を読み取ります。デフォルトでは、それらは R に表示されませんoptions(digits.secs = 6)。R コンソールに適宜表示するために使用できます。

1899 年 12 月 31 日に関して: Excel の日付/時刻は、実際には 1900 年 1 月 00 日 (はい、00 日目! - http://www.cpearson.com/excel/datetimeを参照) からの日数を表す単なる数値です。 .htm )。端数日は、時間、分、秒、およびミリ秒を表します。したがって、日付のない時間は、1900-01-00 が実際には存在しないため、1899-12-31 %HH:%MM:%SS.nnn に変換される小数 0.x として表されます。日付を読み取るときに基礎となる (分数の) 数値を表示したい場合は、列の型を手動で指定して、への呼び出しで使用することができますnumericforceConversion = TRUEreadWorksheetreadWorksheet(..., colTypes = c(..., "numeric", ...), forceConversion = TRUE)

CSVエクスポートに関して:列を使用write.csv2すると(への呼び出しの結果)、ミリ秒を含めてエクスポートされるようです。POSIXctreadWorksheet

于 2015-07-28T15:09:30.483 に答える
0

format.POSIXt を使用

 write.csv( format( as.POSIXct("1899-12-31 00:06:18.123"), "%H:%M:%OS3"), file="")
"","x"
"1","00:06:19.123"
于 2015-07-22T20:14:04.780 に答える