2017-03-17 12 views
0

openxlsxを使用してxlsxファイルから日付を読み取ろうとすると問題が発生します。私はすでにxlsxとxlconnectパッケージを試していますが、どちらもコンピュータ上のJavaに何か問題がありますので、openxlsxを使用します。openxlsxを使用してxlsxファイルから日付を読み込んだ後に数値を日付と時刻に変換します

a <- read.xlsx(paste0(myPath,"try/",myFileNameList[i]),startRow = 2,sheet = 1) 

はその後、私はCSVファイルとしてデータを保存します。私は、データを読み取るために、次のコードを使用し

1/01/2015 0:30 
1/01/2015 1:00 
1/01/2015 1:30 
1/01/2015 2:00 
1/01/2015 2:30 
1/01/2015 3:00 
1/01/2015 3:30 
1/01/2015 4:00 
1/01/2015 4:30 
1/01/2015 5:00 

:よう

私の日付データがあります。このCSVファイルでは、日付は次のようになります。

42005.02083 
42005.04167 
42005.0625 
42005.08333 
42005.10417 
42005.125 
42005.14583 
42005.16667 
42005.1875 
42005.20833 

クラスは数値です。したがって、これらの数値は上記の日付に対応する必要があります。数値データを日付と時刻に変換するにはどうすればよいですか?

データサンプルは次のとおりです。

a <- c(42005.02083,42005.04167,42005.06250,42005.08333,42005.10417,42005.12500,42005.14583,42005.16667,42005.18750,42005.20833) 

答えて

3

は、彼らは1899年12月30日以降の日と小数日です:

as.POSIXct("1899-12-30") + as.difftime(a, units="days") 
# [1] "2015-01-01 00:29:59 AEST" "2015-01-01 01:00:00 AEST" "2015-01-01 01:30:00 AEST" 
# [4] "2015-01-01 01:59:59 AEST" "2015-01-01 02:30:00 AEST" "2015-01-01 03:00:00 AEST" 
# [7] "2015-01-01 03:29:59 AEST" "2015-01-01 04:00:00 AEST" "2015-01-01 04:30:00 AEST" 
#[10] "2015-01-01 04:59:59 AEST" 

はを除いて(デフォルトでは、ローカルタイムゾーンで)意図した結果を取得します。保存と再読み込みの際の精度の低下に関連する非常に小さな丸め誤差。

+0

ありがとうございました!しかし、私はあなたの答えを複製することはできません。私はメルボルンにいます。私のデータには、シドニー、メルボルン、オーストラリアのすべての州が含まれます。私が走ったとき:as.POSIXct(a、origin = "1899-12-30"、tz = "Australia/Brisbane")+ as.difftime(a、units = "days")。結果は次のようなものです:[1] "2015-01-01 22:10:04 AEST" "2015-01-01 22:40:05 AEST" "2015-01-01 23:10:05 AEST" ... 「オーストラリア/メルボルン」のような他のtzを使うと、私は異なった結果を出します。これを私に説明してもらえますか?ありがとう。 –

+0

@FengChen - 私が書いたコードを使用しなかったので、 'as.POSIXct(a、origin =" 1899-12-30 ")'と 'as.POSIXct(" 1899-12-30 ")'はありません。同じことが全くありません。 – thelatemail

+0

入手しました。どうもありがとう! –

関連する問題