В Excel используется формат «день-целое число». R использует «целое число секунд» для времени и «целое число дня» для Date
, поэтому в зависимости от того, в какой класс вы конвертируете, вам необходимо указать день в секундах (86 400). Также стоит знать, что Excel использует «происхождение» с 1899 года (год).
as.POSIXct(43906.625 * 86400, origin = "1899-12-30", tz = "UTC")
# [1] "2020-03-16 15:00:00 UTC"
Немного истории: причина, по которой это "1899-12-30"
, а не, скажем, "1899-12-31"
(конец дня?) или что-то еще упомянуто в сообщении блога за 2013 год:
Для Excel на Windows дата происхождения 30 декабря 1899 года для дат после 1900 года. ( Разработчик Excel подумал, что 1900 год был високосным, но это не так.) Для Excel на c датой происхождения является 1 января 1904 года.
Я не знаю канонической ссылки для этого, и веб-сайт, с которого R-Bloggers заимствовали / скопировали эту статью, не отвечает. Я бы предпочел, чтобы для этого утверждения (о том, что инженеры ошибочно определили високосный год) все еще действующие и более канонические ссылки.