R 在时间戳hhmmss中插入冒号

R 在时间戳hhmmss中插入冒号,r,time-format,R,Time Format,我是stackoverflow和R编程新手 假设我有以下数据: time<-as.factor(c(142250,101449,85829)) as.data.frame(time) 我想将上述内容转换为带有分号的时间戳,例如: 142250将是14:22:50 我能够使用chron软件包找到以下代码: library('chron') times(gsub("(..)(..)(..)", "\\1:\\2:\\3", date)) 返回 [1] 14:22:50 10:14:49 *

我是stackoverflow和R编程新手

假设我有以下数据:

time<-as.factor(c(142250,101449,85829))
as.data.frame(time)
我想将上述内容转换为带有分号的时间戳,例如:

142250将是14:22:50

我能够使用chron软件包找到以下代码:

library('chron')
times(gsub("(..)(..)(..)", "\\1:\\2:\\3", date))
返回

[1] 14:22:50 10:14:49 **<NA>**  
我相信我可能不得不做一些循环,但我不知道该怎么做


任何帮助都将不胜感激。

因此,为了达到您想要的输出,您可以使用
sprintf
并在字符串短于6的情况下添加一个前导
0
,尽管请参见@rollands注释并提供更清晰的说明

library('chron')
time <- sprintf("%06d", as.numeric(as.character(time)))
times(gsub("(..)(..)(..)", "\\1:\\2:\\3", time))
## [1] 14:22:50 10:14:49 08:58:29
library('chron')

时间因此,为了达到您想要的输出,您可以使用
sprintf
,并在字符串短于6的情况下添加一个前导
0
,尽管请参见@rollands注释并提供更清晰的说明

library('chron')
time <- sprintf("%06d", as.numeric(as.character(time)))
times(gsub("(..)(..)(..)", "\\1:\\2:\\3", time))
## [1] 14:22:50 10:14:49 08:58:29
library('chron')

时间我很想避免使用正则表达式,而只是简单地使用


time我倾向于避免使用正则表达式,而只使用


时间因此,
11111
保证是
01:11:11
而不是
11:01:11
11:11:01
?是的,这是正确的!感谢您指出,
11111
保证是
01:11:11
,而不是
11:01:11
11:11:01
?是的,这是正确的!谢谢你指出,嗨,大卫,这非常有效!非常感谢。我没有意识到“sprintf”的功能:)嗨,大卫,它工作得很好!非常感谢。我不知道“sprintf”函数:)
library('chron')
time <- sprintf("%06d", as.numeric(as.character(time)))
times(gsub("(..)(..)(..)", "\\1:\\2:\\3", time))
## [1] 14:22:50 10:14:49 08:58:29
time <- sprintf("%06d", as.numeric(as.character(time)))
paste(
  substring(time, 1, 2), 
  substring(time, 3, 4), 
  substring(time, 5, 6), 
  sep = ":"
)