2015-05-26 3 views
0

Я хотел бы преобразовать целую колонку с as.Date в формат даты.as.Date конвертировать дату в фрейме данных

str(fluesse) 
'data.frame': 1049 obs. of 28 variables: 
$ Datum      : Date, format: NA NA NA ... 

даты форматируются как это:

07.08.14

Это то, что я пытался

as.Date(as.character("07.08.14"), format="%d.%m.%y") 
[1] "2014-08-07" 
as.Date(as.character(fluesse$Datum), format = "%d.%m.%y") 
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 

Я всегда получаю NA для записей в fluesse$Datum

и когда Я пытаюсь проверить, какой класс он мне дает

class("fluesse$Datum") 
[1] "character" 

Что мне не хватает, когда я пытаюсь использовать as.character на data.frame?

+0

Можете ли вы показать пример, который воспроизводит NA (вместо имени объекта)? – akrun

+0

из вашего примера кажется, что ваш столбец 'Datum' заполнен словами' NA' не с датами в строковом формате. возможно, это проблема с чтением данных в data.frame 'fluesse', а не с преобразованием? – inscaven

ответ

2

Ну, ваш fluesse$Datum в str(.)является уже класса "Date" со всеми САМ. Затем вы показываете еще один fluesse$Datum, который имеет класс «символ», поэтому as.character(.) не будет иметь эффекта.

Может быть, вы просто спутать себя, вызвав обе версии fluesse вместо сказать d.fl.1 и d.fl.2 (одна конвенция любит, чтобы обозначить наборы данных начальной d.)?

1

Для всех преобразований по дате ... Попытка «пакета lubridate» всегда помогает. Такие функции, как dmy_hms, mdy_hms помогают в синтаксическом анализе практически любого формата даты. Просто установите пакет и поиграйте с ним. Я думаю, вы будете выяснить yourself.You может попробовать это:

> library(lubridate) 
 
> x <- "07.08.14" 
 
> x <- dmy(x) 
 
> as.Date(x, format="%d.%m.%y") 
 
[1] "2014-08-07"

вместо «х» вы можете поместить свой вектор даты и попробовать.

Другая возможность заключается в том, что данные не были прочитаны из источника, поэтому класс() на векторе даты дает символ «NA».