如何在R中将时间格式从1730更改为17:30:00?

如何在R中将时间格式从1730更改为17:30:00?,r,dataframe,date,time,dataset,R,Dataframe,Date,Time,Dataset,在一个数据集中,我发现时间列有170014108451030等等 数据集太大 如何将此格式(170014108451030)转换为R中的17:00:00、14:10:00、8:45:00、10:30:00格式?我们可以将sub与sprintf一起使用sprintf用于数字数量不相同(3或4)的情况,对于3个数字,sprintf在前面(%04d)填充一个0,使其在结尾追加:00,然后使用sub捕获第一个数字或字符((…)),并替换为捕获组的反向引用(\\1),后跟一个: sub("^(..)",

在一个数据集中,我发现时间列有170014108451030等等

数据集太大


如何将此格式(170014108451030)转换为R中的17:00:00、14:10:00、8:45:00、10:30:00格式?

我们可以将
sub
sprintf
一起使用
sprintf
用于数字数量不相同(3或4)的情况,对于3个数字,
sprintf
在前面(
%04d
)填充一个0,使其在结尾追加
:00
,然后使用
sub
捕获第一个数字或字符(
(…)
),并替换为捕获组的反向引用(
\\1
),后跟一个

sub("^(..)", "\\1:", sprintf("%04d:00", df1$Time))
#[1] "17:30:00" "14:10:00" "08:45:00" "10:30:00"
数据
df1备选方案(来自@akrun答案的数据):

df1 <- structure(list(Time = c(1730, 1410, 845, 1030)), class = "data.frame",
    row.names = c(NA, 
-4L))
 format(strptime(gsub("^(\\d{3}$)","0\\1",df1$Time),format="%H%M"),"%H:%M:%S")
[1] "17:30:00" "14:10:00" "08:45:00" "10:30:00"