R проблема Столбец даты, сохраненный как фактор R, не может его преобразовать - PullRequest
0 голосов
/ 11 ноября 2018

Я скачал данные SP500 с тикера Yahoo Finance GSPC и пытаюсь отфильтровать их по годам, однако столбец «Дата» хранится как «Фактор», поэтому R не может его отфильтровать. Может кто-нибудь помочь мне преобразовать это? Я пробовал несколько решений, но ничего не получалось.

До сих пор я использовал загруженный пакет lubridate и использовал следующий код, но все значения были заменены NA.

as.Date(SP500$Date, format = "%m-%d-%Y") 

Затем я использовал код: SP500$Date <- ymd(SP500$Date, format = "%Y-%m-%d") и снова ничего не произошло. (SP500 - это имя фрейма данных, в котором я хранил данные)

Кроме того, попытался использовать просто SP500$Date <- as.Date(SP500$Date), но R говорит, что не знает, как преобразовать его в Date.

Любая помощь будет высоко ценится! Спасибо!

1 Ответ

0 голосов
/ 11 ноября 2018

Классы существуют только в среде языка программирования. Вероятно, произошло то, что ваши данные (возможно, файл .csv?) Были интерпретированы как factor как R во время чтения.

Все, что вы пытаетесь сделать здесь, может быть выполнено с помощью библиотеки base в R (то есть вам не нужно ничего импортировать).

Если вы имеете дело с датами:

df$date <- as.Date(df$date, format = "%Y-%m-%d")

Если вы имеете дело с датами:

df$date <- as.POSIXct(df$date, format = "%Y-%m-%d %H:%M:%S")

(очевидно, конкретный формат может отличаться; см. Список )

Иногда принуждение в R может действовать привередливым. Параметр format несколько не прощает ошибок. Лично я часто принимаю - за / или сопоставляю "%Y-%m-%d" с "%d-%m-%Y", в результате чего операция выдает ошибку. Очевидно, что если формат не соответствует вашим данным, экземпляры, которые нельзя описать указанным вами format, приведут к NA s.

Иногда ваши даты на самом деле целые (например, 20181111); в этом случае вам может потребоваться указать '1970-01-01' для параметра origin, равного as.Date(). Например, если вы перебираете вектор с Date s, используя цикл for, R не учитывает класс переданных Date s и преобразует их в integer s.

Это может звучать как бандитское решение, но приведения класса из общих типов, таких как character, обычно пишутся хорошо; Я часто упреждающе приводлю объект к character, когда не понимаю, почему моя попытка принудить класс провалилась.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...