尽管似乎有很多有关此问题或相关问题的帖子,但我找不到在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))
但这无法显示小数点。
答案 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"