Как изменить формат времени с 1730 до 17:30:00 в R? - PullRequest
2 голосов
/ 24 апреля 2020

В наборе данных я нашел столбец Время имеет 1700, 1410, 845, 1030 и т. Д. c.

Набор данных слишком велик.

Как преобразовать этот формат (1700, 1410, 845, 1030) в 17:00:00, 14:10:00, 8:45: 00, 10:30:00 в формате R?

Ответы [ 2 ]

2 голосов
/ 24 апреля 2020

Альтернатива (данные из ответа @ akrun):

 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"
2 голосов
/ 24 апреля 2020

Мы можем использовать sub с sprintf. sprintf используется, поскольку количество цифр не одинаково (3 или 4), для 3 цифр sprintf дополняет 0 спереди (%04d), чтобы сделать его согласованным при добавлении :00 в конце , затем используйте sub, чтобы захватить первые цифры или символы ((..)), и замените на обратную ссылку захваченной группы (\\1), за которой следует :

sub("^(..)", "\\1:", sprintf("%04d:00", df1$Time))
#[1] "17:30:00" "14:10:00" "08:45:00" "10:30:00"

data

df1 <- structure(list(Time = c(1730, 1410, 845, 1030)), class = "data.frame",
    row.names = c(NA, 
-4L))
...