将字符串分成2个字符的组,在R中用冒号(1330到13:30)分隔

rba*_*att 5 regex r

我怎么"1330"变成"13:30""133000"变成"13:30:00"?基本上,我想在每对数字之间插入一个冒号.我正在尝试将字符转换成时间.

似乎应该有一种非常优雅的方式来做到这一点,但我想不到它.我想使用的某种组合的paste()substr(),而是一种优雅的解决方案是逃避我.

编辑:需要转换的示例字符串:

X <-   c("120000", "120500", "121000", "121500", "122000", "122500", "123000") #example of noon to 12:30pm
Run Code Online (Sandbox Code Playgroud)

flo*_*del 8

您可以使用具有正向前瞻性则表达式:

gsub("(\\d{2})(?=\\d{2})", "\\1:", X, perl = TRUE)
# [1] "12:00:00" "12:05:00" "12:10:00" "12:15:00" "12:20:00" "12:25:00" "12:30:00"
Run Code Online (Sandbox Code Playgroud)


G. *_*eck 8

这将替换两个字符的每个序列,而不是带有相同字符的边界,后跟冒号:

gsub("(..)\\B", "\\1:", X)
Run Code Online (Sandbox Code Playgroud)

在示例字符串上,它给出:

[1] "12:00:00" "12:05:00" "12:10:00" "12:15:00" "12:20:00" "12:25:00" "12:30:00"
Run Code Online (Sandbox Code Playgroud)