2017-04-05 15 views
10

残念ながら、2012年1月12日には42705の数値形式を使用して日付時刻を記録したcsvで作業しています。Lubridateを使ってExcelの日付形式を適切な日付に変換する方法

私は、Lubridateまたは他のパッケージを使用してRで正しいフォーマットに変換したいと考えています。それを処理する関数はありますか?

+2

[この](http://stackoverflow.com/questions/19172632/converting-excel-datetime-serial-number-to -r-datetime)があなたを設定するかもしれません。 – count

+0

このような早急な返信をありがとうございます。 – elksie5000

答えて

15

これにはlubridateを使用する必要はありません。as.Dateは、このタイプの変換をうまく処理します。トリックは、あなたの列の型を保持したい場合は、あなたがreadxlパッケージからread_excel機能を使用して試すことができます

as.Date(42705, origin = "1899-12-30") 
# [1] "2016-12-01" 

1899、Excelで12月30日で、原点を、提供しなければならないということです。これにより、数値書式が保存されたXLSまたはXLSXファイルを読み込むことができます。ここで

+1

ありがとうございました。私はRにはまだまだ新しく、治療を受けました。 – elksie5000

+0

大歓迎です。私は原点がやや離れていることに気がついたので、今私の回答を編集しています。あなたのプロジェクトでこのコードを使用する前に私に分かります:-) –

+0

実際には01/12/2016をExcelに入力して数値に変換しました。私が得た値は42705ではなく、42381でした。 'as.Date'関数で42381を使うと1/20/2016に戻ります。番号をExcelから正しくコピーしてもよろしいですか? –

0

は、管理人とtibbleパッケージを使用してそれを行うための別の方法です:

install.packages("janitor") 

install.packages("tibble") 

library(tibble) 

library(janitor) 

excel_numeric_to_date(as.numeric(as.character(YourDate), date_system = "modern") 
関連する問題