А как же:
Если вы хотите манипулировать ими как временем, вы можете попробовать это:
u <- c('2:21','6:08','0:39','13:51')
strptime(u,'%M:%S')
[1] "2018-08-30 00:02:21 CEST" "2018-08-30 00:06:08 CEST" "2018-08-30 00:00:39 CEST" "2018-08-30 00:13:51 CEST"
Таким образом, вы можете выполнять такие операции, как алгебраические суммы:
strptime(u,'%M:%S')-strptime(u[2],'%M:%S')
Time differences in secs
[1] -227 0 -329 463
Если вам нужен просто символьный вектор, вы можете немного его обрезать:
substr(strptime(u,'%M:%S'),15,19)
[1] "02:21" "06:08" "00:39" "13:51"
или
format(strptime(u,'%M:%S'), '%M:%S')
[1] "02:21" "06:08" "00:39" "13:51"
Наконец, если вы хотите, чтобы десятичные числа минут использовались только в том случае, если они существуют, вы можете попробовать это:
ifelse(
substr(strptime(u,'%M:%S'),15,15)==0,
substr(strptime(u,'%M:%S'),16,19),
substr(strptime(u,'%M:%S'),15,19))
[1] "2:21" "6:08" "0:39" "13:51"
EDIT
Если вы хотите использовать 60 шкал как раз, то один вариант подходит для графиков:
u <- c('2:21','6:08','0:39','13:51')
strptime(u,'%M:%S')
[1] "2018-08-30 00:02:21 CEST" "2018-08-30 00:06:08 CEST" "2018-08-30 00:00:39 CEST" "2018-08-30 00:13:51 CEST"
plot(x=c(1,2,3,4),strptime(u,'%M:%S'))
Если вы предпочитаете десятичную шкалу, вы можете преобразовать ее:
sapply(strsplit(u,":"),
function(x) {
x <- as.numeric(x)
x[1]+x[2]/60
})
[1] 2.350000 6.133333 0.650000 13.850000