2015-08-06 2 views
-2

Когда я прочитал в файле данных с использованием R, переменная Date является фактором.Использование R, как преобразовать фактор в дату, не теряя год?

Например, пусть epc сохранит набор данных. Тогда, если мы посмотрим на структуру первого дня, мы получаем

ул (ЕРС $ Date [1]) Фактор ж/1 уровень "16/12/2006": 1

Если вы должны были преобразовать это в символ, as.character (epc $ Date [1]), вы получили бы то же самое: «16/12/2006»

Независимо от того, что я пробовал, Я не могу преобразовать этот тип объекта в действительную дату.

если дата «16/12/2006» (которую я предполагаю, это 16 декабря 2006 г.), то as.Date (epc_full $ Date [1]) дает «0016-12-20» - - полный год утерян.

Я пробовал много разных вещей, например, сначала преобразовывая дату в символ, пытаясь использовать разные версии as.Date() и т. Д., Но я получаю точно такой же результат, когда вход «16/12/2006 "

Что это за трюк здесь?

+1

Вы можете предоставить 'dput' как минимум' head' переменной фактора? – hrbrmstr

+0

Можете ли вы попробовать класс (epc $ Date [1]), чтобы узнать, какой тип используется? – penguin2718

+2

Вам также необходимо указать формат: 'as.Date (вещь, формат ="% d /% m /% Y ") при условии, что это формат m/d/Y. – hrbrmstr

ответ

0

Итак, сначала это почему-то читается как фактор с уровнем, обозначенным «16/12/2006». Вы конвертируете это в персонажа, поэтому я начну.

Существует несколько способов сделать это, но я считаю, что проще всего использовать пакет lubridate.

#Install package 
install.packages("lubridate") 
library(lubridate) 

yourTextDate <- "16/12/2006" 

yourDate <- dmy(yourTextDate) 

yourDate 
0

Если вы строго хотите Date класс, то:

as.Date(s, format='%d/%m/%Y') 
## [1] "2006-12-16" 
class(.Last.value) 
## [1] "Date" 

Таким образом, вы можете конвертировать весь столбец дат с:

as.Date(epc$Date, format='%d/%m/%Y') 

Это должно работать, будь то персонаж или фактор.

lubridate хорошо работает, но если вы придерживаетесь базой R, это тоже хорошо работает.