2017-04-05 95 views
10

我正在使用csv,但不幸使用42705的數字格式記錄了日期時間,雖然它應該是01/12/2016。如何使用Lubridate將Excel日期格式轉換爲正確的日期

我想在R中使用Lubridate或其他包將其轉換爲正確的格式。有一個函數可以處理它嗎?

+2

[這](http://stackoverflow.com/questions/19172632/converting-excel-datetime-serial-number-to -r-datetime)可能會啓動你。 – count

+0

謝謝你這麼快回復。 – elksie5000

回答

15

對此,您不需要使用lubridate,基本功能as.Date可以很好地處理這種類型的轉換。訣竅是,你必須提供原產地,這在Excel是12月30日1899年

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

如果你想保留你的列類型,你可以嘗試使用read_excel函數從readxl包。這使您可以加載保留數字格式的XLS或XLSX文件。

+1

謝謝你。我對R仍然很陌生。它工作得很好。 – elksie5000

+0

非常歡迎。我現在正在編輯我的回覆,因爲我意識到原點稍微偏離了原點。給我一分鐘,然後在你的項目中使用這段代碼:-) –

+0

其實我只是在Excel中鍵入01/12/2016並將其轉換爲數字。我得到的值是42381,而不是42705.在'as.Date'函數中使用42381可以讓您回到1/12/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") 
相關問題