将字符转换为数据帧中的时间戳

时间:2016-12-02 18:25:55

标签: r dataframe posixct

我在数据框中有一个被识别为字符类的时间戳。出于某种原因,我无法将其转换为poxis时间戳。

以下是数据样本。

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")

上述尝试都没有奏效。在尝试每一个之后,这个课将永远作为角色出现。

有什么建议吗?

2 个答案:

答案 0 :(得分:5)

我们可以使用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"

答案 1 :(得分: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)