У меня возникли проблемы с работой функции as.Date в R. У меня есть вектор дат, которые я читаю из. CSV-файла, который входит как фактор целых чисел или как символ (в зависимости от как я читаю в файле, но это, похоже, не имеет ничего общего с проблемой), отформатирован как %m/%d/%Y
.Почему as.Date возвращается как тип double?
Я иду через файл построчно, вытаскивая поле даты и пытается преобразовать его для использования в других местах, используя следующий код:
tmpDtm<-as.Date(as.character(tempDF$myDate), "%m/%d/%Y")
Это, кажется, чтобы дать мне то, что я хочу, для Например, если я делаю это с начальным значением 12/30/2014, я получаю значение "2014-12-30"
. Однако, если я исследую это значение с помощью typeof()
, R говорит мне, что его тип данных «double». Кроме того, если я попытаюсь связать это с другими значениями и сохранить его в кадре данных с использованием c()
или cbind()
, то в кадре данных он будет храниться как 16434, что выглядит как какое-то другое значение внутренней памяти Дата. Я уверен, что это так, потому что, если я попытаюсь снова преобразовать это значение, используя as.Date()
, он выдает ошибку с запросом о происхождении.
Итак, два вопроса: это так, как ожидалось? Если это так, есть ли более подходящий способ конвертировать дату, чтобы на самом деле я получил объект с типом даты?
Спасибо
Пожалуйста, сделайте воспроизводимый пример Какого типа имеют данные, которые вы 'с()' или 'cbind()' это ли вам известно, что все элементы вектора? должны быть одного типа? – Bernhard
Мне это известно. Мои извинения за неясность, но тип данных двойной, прежде чем я даже попытаюсь связать (т. Е. Объект tmpDtm выше имеет тип: double). Проблема привязки для меня меньше беспокоит - если я могу убедиться, что у меня есть объект даты перед связыванием, я могу выяснить, как связать его с другими данными так, как мне нужно, - я просто подумал, что дополнительная информация может помочь в определении того, что происходит с преобразованием, прежде чем я свяжусь. – drRussClay
Я лично не знаю тонких различий между двумя функциями, но попробуйте 'class' вместо' typeof'. Первый, кажется, возвращает 'Date', а последний возвращает' double'. – dsaxton