我的数据如下:
> str(m)
int [1:8407] 930 1050 1225 1415 1620 1840 820 1020 1215 1410 ...
这是以小时和分钟为单位的时间。我试图把它变成某种东西(9:30,12:10,16:40,8:25 ......)。
> m1 <- strptime(m, "%H%M")
> head(m1)
[1] NA "2015-10-14 10:50:00 VLAT"
[3] "2015-10-14 12:25:00 VLAT" "2015-10-14 14:15:00 VLAT"
[5] "2015-10-14 16:20:00 VLAT" "2015-10-14 18:40:00 VLAT"
> str(m1)
POSIXlt[1:8407], format: NA "2015-10-14 10:50:00" "2015-10-14 12:25:00" ...
如何及时转换一组数字?
答案 0 :(得分:1)
使用正则表达式:
sub("(\\d{2})$", ":\\1", x)
#[1] "9:30" "10:50" "12:25" "14:15" "16:20" "18:40" "8:20"
#[8] "10:20" "12:15" "14:10"
在最后两位数字上进行匹配,并在其前面添加冒号。
数据强>
x <- c(930, 1050, 1225, 1415, 1620, 1840, 820, 1020, 1215, 1410)
答案 1 :(得分:0)
我们使用sprintf
格式化数字以填充3位数字的前导0,使用strptime
然后使用format
获取小时和分钟。
format(strptime(sprintf('%04d', v1), format='%H%M'), '%H:%M')
#[1] "09:30" "10:50" "12:25"
或另一种选择是
sub('(\\d{2})$', ':\\1', v1)
#[1] "9:30" "10:50" "12:25"
v1 <- c(930, 1050,1225)
答案 2 :(得分:0)
另一种方式是,
x <- c(645, 1234,2130)
substr(as.POSIXct(sprintf("%04.0f", x), format='%H%M'), 12, 16)
#[1] "06:45" "12:34" "21:30"