Преобразовать символ MongoDB как дату R

Я пытался конвертировать дату MongoDB в объект R date. я использую

library(RMongo)
library(data.table)

mongo<-mongoDbConnect("test", host = "127.0.0.1", port = "27017")
event<-dbGetQuery(mongo, "event", "", 0, 1000)
data<-as.data.table(event)

date<-data $ date возвращает вектор:

[1] "Fri Oct 28 13:15:00 CEST 2016" "Fri Oct 28 16:00:00 CEST 2016" "Fri Nov 04 18:30:00 CET 2016"  "Fri Nov 04 18:45:00 CET 2016" 

Я не могу конвертировать этот вектор. Я попробовал следующий код:

as.Date(date, format = "%a %b %d %H:%M:%S %Y")
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

strptime(date, format = "%a %b %d %H:%M:%S %Y")
[1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Я также пытался изменить формат с помощью

s.POSIXct(date, "%a %b %d %H:%M:%S %Z %Y")
Error in as.POSIXct.default(date, "%a %b %d %H:%M:%S %Z %Y")

Может кто-то любезно объяснить, как я могу этого добиться, и объяснить, что я делаю неправильно..

Спасибо заранее

1 ответ

У меня была такая же проблема, и я нашел 2 возможных решения:

  1. Вы можете использовать библиотеку mongolite вместо RMongo, которая дает вам даты в формате "2016-01-01 01:00:00". Вы просто форматируете их, например, вызывая format(yourTime, "%Y-%m-%d %H:%M:%OS3") чтобы восстановить миллис.
  2. Используя обе библиотеки, вы можете использовать структуру агрегирования и на этапе проекта преобразовать дату в строку, например, так:"$dateToString": { "format": "%Y-%m-%d %H:%M:%S.%L", "date": "$yourTime" }Затем вы снова форматируете их, как в предыдущем случае.

Я надеюсь, что это помогает.

Прощальный привет

Другие вопросы по тегам