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