Я относительно новичок в R, но это первый раз, когда мне приходилось иметь дело с преобразованиями даты. Я прочитал свои данные из CSV (используя read.table()), но я выделил данные, чтобы выделить мою проблему. При чтении в R поле Date является символом.Преобразование символа в дату в R
Просто, большинство моих дат заворачиваются правильно, за исключением нескольких случаев. Пример ниже, мы надеемся, покажет вам, что происходит.
# my attempt to coerce the date -- uses the stringr package
prods.all$Date2 <- as.Date(str_sub(prods.all$Date, 1,
str_locate(prods.all$Date, " ")[1]-1),
"%m/%d/%Y")
# grab two rows to highlight my issue
temp <- prods.all[c(1925:1926), c(1,8)]
> temp
Date Date2
1925 10/9/2009 0:00:00 2009-10-09
1926 10/15/2009 0:00:00 0200-10-15
Как вы можете видеть, год некоторых из дат неточно. Образец, кажется, возникает, когда день двойной цифры.
Я просмотрел несколько книг и попытался Google лучше, но все кажется, что мои данные не корректно отформатированы на входе.
Учитывая, насколько силен R, я считаю, что есть очень простой способ заставить мою колонку быть действительными датами и что я не замечаю очень очевидного решения.
Любая помощь, которую вы можете предоставить, будет принята с благодарностью.
Причина вы получаете инвалиду 0200 - это то, что длина символов дня отличается (две цифры за 15 октября, одна цифра за 9-октябрь), и ваш код замены строки не учитывает это. Во всяком случае, вы, вероятно, можете использовать as.Date или strptime непосредственно в формате agument, без дальнейшей обработки символов. – mdsumner 2010-11-30 04:21:06