sd
работает с числом, внутренне представляющим время (дни для chron::times
, секунды для hms
и POSIXct
, устанавливаемые для difftime
), что вполне нормально. Единственная проблема заключается в том, что он удаляет класс из результата, поэтому он не печатается красиво. Решение, таким образом, заключается в простом преобразовании обратно во временной класс:
x <- c('03:08:20','03:11:30','03:22:18','03:27:39')
chron::times(sd(chron::times(x)))
#> [1] 00:09:03
hms::as.hms(sd(hms::as.hms(x)))
#> 00:09:03.409836
as.POSIXct(sd(as.POSIXct(x, format = '%H:%M:%S')),
tz = 'UTC', origin = '1970-01-01')
#> [1] "1970-01-01 00:09:03 UTC"
as.difftime(sd(as.difftime(x, units = 'secs')),
units = 'secs')
#> Time difference of 543.4098 secs