2016-12-02 3 views
1

У меня есть метка времени в DataFrame, которая распознается как класс символов. По какой-то причине я не могу преобразовать его в метку времени.Преобразование символа в метку времени в dataframe

Вот пример данных.

ID dateTime stage 
1 2016-11-01T00:00:00.000Z 4.82 
2 2016-11-01T00:15:00.000Z 4.83 
3 2016-11-01T00:30:00.000Z 4.84 
4 2016-11-01T00:45:00.000Z 4.85 
5 2016-11-01T01:00:00.000Z 4.86 
6 2016-11-01T01:15:00.000Z 4.87 

Я пробовал использовать следующее.

format(df$dateTime, "Y%-%m-%d %h:%m") 


as.Date(df$dateTime, "Y%-%m-%d %h:%m") 



as.POSIXct(df$dateTime, tz="GMT") 

Ни одна из попыток выше не работала. После каждого из них, класс всегда выходил как персонаж.

Любые предложения?

ответ

4

Мы можем использовать anytime

library(anytime) 
anytime('2016-11-01T00:15:00.000Z') 
#[1] "2016-11-01 00:15:00 IST" 

Или используйте strptime

strptime('2016-11-01T00:15:00.000Z', '%Y-%m-%dT%H:%M:%OSZ') 
#[1] "2016-11-01 00:15:00 IST" 
0

Z означает, что пришло время UTC. Таким образом, один из вариантов состоит в том, чтобы разделить букву и преобразовать ее в POSIXCT с tz = "UTC". Поскольку данные не легко воспроизводятся, я просто использую вектор двух дат:

x<- as.POSIXct(gsub(pattern = "[A-Z]",replacement = " ", 
       x = c("2016-11-01T00:45:00.000Z","2016-11-01T00:39:00.000Z")) , 
       tz="UTC") 
x 
class(x) 
Смежные вопросы