将字符日期和时间(以毫秒为单位)转换为 R 中的数字

pan*_*ach 3 r date numeric type-conversion milliseconds

我有以下时间戳向量:

Timestamp <- c("30-09-2016 11:45:00.000", "01-10-2016 06:19:57.860", "01-10-2016 06:20:46.393")
Run Code Online (Sandbox Code Playgroud)

时间戳是包含其他度数和权重列的表的一部分(不幸的是,它似乎不是 data.frame...):

  Timestamp Weight Degrees
1 30-09-2016 11:45:00.000 38.19 40.00 
2 01-10-2016 06:19:57.860 39.12 40.00 
3 01-10-2016 06:20:46.393 42.11 41.00
Run Code Online (Sandbox Code Playgroud)

我想根据时间戳绘制权重,但时间戳的模式是“字符”,这意味着x轴无法正确读取。您有什么建议将其转换为数字吗?

我已经尝试过as.Date(Timestamp,format='%d-%m-%Y %H:%M:%OS3'),但似乎不起作用。

Chr*_*ook 6

正如 Erdem 所说, with as.POSIXctwith%OS几秒钟

t1 <- c("30-09-2016 11:45:00.000", "01-10-2016 06:19:57.860", "01-10-2016 06:20:46.393")     
t2 <- as.POSIXct(t1,format = "%d-%m-%Y  %H:%M:%OS")
Run Code Online (Sandbox Code Playgroud)

请注意,默认情况下,时间戳以整秒为单位显示/打印;见于digits.secs?options

t2
 [1] "2016-09-30 11:45:00 EDT" "2016-10-01 06:19:57 EDT" "2016-10-01 06:20:46 EDT"
Run Code Online (Sandbox Code Playgroud)

但内部保持毫秒分辨率

diff(t2)
 Time differences in secs
 [1] 66897.860    48.533
Run Code Online (Sandbox Code Playgroud)

如果您想显示/打印毫秒分辨率,请使用

options(digits.secs=3)
t2
 [1] "2016-09-30 11:45:00.000 EDT" "2016-10-01 06:19:57.859 EDT" "2016-10-01 06:20:46.392 EDT"
Run Code Online (Sandbox Code Playgroud)