2016-03-14 2 views
0

Эй, я новичок в использовании R, поэтому этот вопрос может быть легким для многих из вас, но я действительно борется. У меня есть столбец в моем наборе данных, называемом datum. Он обрабатывается R как фактор $ Данные: коэффициент с уровнями 550 "1-10-2014", "1-10-2015", ..: 203 203 203 203 203 203 203 203 203 399 ... Когда я пытаюсь преобразовать этот фактор в дату, я получаю как результат NA. Я попробовал несколько вещей, как:Преобразование фактора в дату в R

> prijzen$Datum <- as.Date(prijzen$Datum, format='%d/%m/%y')

> prijzen$Datum<- as.Date(as.character(prijzen$Datum), format="%d/%m/%y")

Даже чтение в файле с stringsAsFactors = FALSE не помогло. Как я могу это исправить?

+3

Добро пожаловать в SO и R. Хмм, как формат ''% d /% m /% y'' резонирует с '1-10-2014'? Нет косой черты, кроме минуса в качестве разделителя. – lukeA

+0

Вы правы! Я изменил его на «% d-% m /% y», но это приводит к 2020-01-02, 2020-01-03 и т. Д .... – RickZ

+0

Посмотрите на '? Strptime': Среди прочего , он объясняет разницу между '% Y' и'% y' (которая является общей ловушкой для ошибок). – lukeA

ответ

1

Ваш формат не так, вы можете использовать:

prijzen <- data.frame(Datum = c("1-10-2014","1-10-2015"), prijs = c(125, 150)) 
prijzen$Datum <- as.Date(prijzen$Datum, format='%d-%m-%Y') 

Это будет формат столбец Datum в качестве даты и может быть использовано в расчетах даты. Формат по умолчанию в формате R соответствует правилам международного стандарта ISO 8601, который выражает день как «2001-02-03»

Но посмотрите, как вы читаете данные. Если, например, вы используете read.csv, попробуйте указать столбцы с опцией colClasses.

Редактировать на основе комментариев, отформатированный вывод, а поэтому результат в формате дд-мм-гггг, а не в стандартном формате ISO:

prijzen$Datum <- format(as.Date(prijzen$Datum, format='%d-%m-%Y'), '%d-%m-%Y') 

Это будет трансформировать столбец нулевой точки на колонку символов. Это больше подходит для печати дат или их экспорта.

+0

Вы правы! Я изменил его на «% d-% m /% y», но это приводит к 2020-01-02, 2020-01-03 и т. Д. ... – RickZ

+0

на основе вашего редактирования, дело в том, что я теряю информацию , В течение нескольких лет больше нет разницы. R делает все годы 2020 вместо 2014, 2015 или 2016. – RickZ

+0

Yess Я использую капитал Y. Он также дает характер класса. – RickZ