Классы существуют только в среде языка программирования. Вероятно, произошло то, что ваши данные (возможно, файл .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
, когда не понимаю, почему моя попытка принудить класс провалилась.