R +使用regex + gsub将整数转换为hh:mm格式

时间:2014-10-08 22:29:53

标签: regex r

间隔是25小时内5分钟间隔的子集

> interval
 [1]   45   50   55  100  105  110  115  120  125  130  135 2035 2040 2045 2050 2055 2100 2105 2110 2115 2120 2125

我想插入:将它放入我可以转换为时间格式的时间格式

> gsub('^([0-9]{1,2})([0-9]{2})$', '\\1:\\2', interval)
 [1] "45"    "50"    "55"    "1:00"  "1:05"  "1:10"  "1:15"  "1:20"  "1:25"  "1:30"  "1:35"  "20:35" "20:40" "20:45"
[15] "20:50" "20:55" "21:00" "21:05" "21:10" "21:15" "21:20" "21:25"

我几乎所有的例子都能使用它。
如何获取它以使其适用于数字"5" ... "45" "50" "55"

在此处找到此副本,但这不使用gsub

2 个答案:

答案 0 :(得分:5)

一种简单的方法是确保所有输入至少包含4个字符:

gsub('^([0-9]{1,2})([0-9]{2})$', '\\1:\\2', sprintf('%04d',interval))
# "00:45" "00:50" "00:55" "01:00" "01:05" "01:10" "01:15" "01:20" "01:25"
# "01:30" "01:35" "20:35" "20:40" "20:45" "20:50" "20:55" "21:00" "21:05"
# "21:10" "21:15" "21:20" "21:25"

答案 1 :(得分:2)

使用sub

> sub('..\\K', ':', sprintf('%04d',interval), perl=T)
#  [1] "00:45" "00:50" "00:55" "01:00" "01:05" "01:10" "01:15" "01:20" "01:25"
# [10] "01:30" "01:35" "20:35" "20:40" "20:45" "20:50" "20:55" "21:00" "21:05"
# [19] "21:10" "21:15" "21:20" "21:25"