如何将毫秒转换为R

时间:2020-09-16 14:44:49

标签: r datetime

尽管似乎有很多有关此问题或相关问题的帖子,但我找不到在R 中提供解决方案的帖子。 一旦知道如何解决该问题,该问题应该很容易解决:我有毫秒级的向量。我想将它们更改为小时,分钟,秒(三个小数点)。例如:

x <- c(29, 300, 1000, 213451)

预期结果是这样

# "00:00:00.029"  "00:00:00.300"  "00:00:01.000"  "00:03:33.451"

到目前为止,我尝试过的是一系列复杂的操作:

hrs = x / (60 * 60 * 1000)
mins = (hrs %% 1) * 60
secs <- sprintf(((mins %% 1) * 60), fmt = '%#.3f')
paste(trunc(hrs), trunc(mins), secs, sep = ":")
[1] "0:0:0.029"  "0:0:0.300"  "0:0:1.000"  "0:3:33.451"

结果总比没有好,但仍然与预期的结果相去甚远,而且,到达那里的代码除了简单明了之外,什么也没有。 将毫秒转换为时间戳格式的更快,更优雅的方法是什么?

编辑: 另外,我尝试过的是这样:

library(chron)
times(x / (24 * 60 * 60 * 1000))

但这无法显示小数点。

1 个答案:

答案 0 :(得分:2)

您可以设置"%OSn"来将秒数截断为n小数位,其中n在0到6之间。

format(as.POSIXct(x / 1000, "UTC", origin = "1970-01-01"), "%H:%M:%OS3")

# [1] "00:00:00.029" "00:00:00.300" "00:00:01.000" "00:03:33.450"