2017-04-05 10 views
10

Maalesef, 01/12/2016 olmasına rağmen 42705 sayı biçimini kullanarak günlüğe kaydedilen bir csv ile çalışıyorum.Excel date formatını Lubridate ile düzgün bir tarihe dönüştürme nasıl yapılır

Lubridate veya başka bir paket kullanarak R'deki doğru formata dönüştürmek istiyorum. Bunu halledecek bir işlev var mı?

+2

[Bu] (http://stackoverflow.com/questions/19172632/converting-excel-datetime-serial-number-to: Burada – count

+0

Böyle hızlı bir cevap için teşekkür ederim. – elksie5000

cevap

15

Bunun için lubridate kullanmanıza gerek yoktur, bu temel işlev as.Date temel işlevini iyi bir şekilde işleyebilir. Eğer sütun türlerini korumak istiyorsanız Hüner readxl paketinden read_excel işlevini kullanarak deneyebilirsiniz, 1899.

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

, sen 30 Aralık Excel'de kökeni, sağlamak zorunda olmasıdır. Bu, sayı biçimlendirmesi korunmuş bir XLS veya XLSX dosyası yüklemenizi sağlar.

install.packages("janitor") 

install.packages("tibble") 

library(tibble) 

library(janitor) 

excel_numeric_to_date(as.numeric(as.character(YourDate), date_system = "modern") 
+1

Bunun için teşekkürler. Hala R. için çok yeniim. – elksie5000

+0

Oldukça hoş geldiniz. Cevabımı biraz değiştirdiğimi fark ettiğimden beri cevabımı düzenliyorum. Bu kodu projenizde kullanmadan önce bana bir dakika verin :-) –

+0

Aslında sadece 01/12/2016'i Excel'e yazdım ve bir sayıya dönüştürdüm. Aldığım değer 42381, 42705 değil. 42391 'as.Date' işlevini kullanarak 1/12/2016'e geri dönüyorsunuz. Numarayı Excel'den doğru şekilde kopyaladığınızdan emin misiniz? –

0

kapıcı ve Tibble paketleri kullanarak bunu yapmak için başka bir yoludur -r-datetime) sizi kurdurabilir.
İlgili konular