Переформатирование неправильной даты - PullRequest
0 голосов
/ 22 октября 2018

В настоящее время я работаю через фрейм данных Retrosheet для RStudio и не люблю формат даты и хотел бы изменить его.

devtools::install_github("rmscriven/retrosheet")

Затем я импортировал фрейм данных, из которого я хотел работать, из

GL17 <- getRetrosheet("gamelog", 2017)

вектор даты фрейма данных был создан в формате ГГГГММДД, без надлежащего форматирования, например, 20170402, но яхотел бы изменить это, чтобы показать, например, как 2017-04-02 Я пытался as.Date(GL17$Date, "Y%d%m%"), который вернулся как

Error in charToDate(x) : character string is not in a standard unambiguous format

Что имеет смысл.Есть ли другой способ манипулировать всем вектором проще, чем редактировать (GL17), который занимает вечность и обычно не работает.

1 Ответ

0 голосов
/ 22 октября 2018

"... ГГГГММДД точно так же без надлежащего форматирования, например, 20170402, но я хотел бы изменить его, чтобы показать, например, как 2017-04-02 Я пытался как. Дата (GL17 $ Дата, "Y% d% m%" ), который вернулся как "

Это ГГГГММДД, но вы выполнили" Y% d% m ", что неверно на двух уровнях - отсутствует% иm и d в неправильном порядке:

> as.Date("20100331","Y%d%m")
[1] NA
> as.Date("20100331","%Y%d%m")
[1] NA

При правильном формате это работает:

> as.Date("20100331","%Y%m%d")
[1] "2010-03-31"

, но обратите внимание, что мои ошибки выше не воспроизводят вашу ошибку, поэтому вы должны бытьделать что-то еще неправильно.Может быть, ваши даты на самом деле большие числа:

> as.Date(20100331,"%Y%m%d")
Error in charToDate(x) : 
  character string is not in a standard unambiguous format

Кажется, это всегда дает ту же ошибку, что и вы.Преобразуйте числа в символы и повторите попытку:

> as.Date(as.character(20100331),"%Y%m%d")
[1] "2010-03-31"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...