Предположим, у нас есть эти входные данные:
DF <- data.frame(times = c("08:09:23.079", "08:30:13.062"), values = 1:2)
Для простоты предположим, что самое большее один момент времени в минуту (мы показываем альтернативу, которая немного длиннеевпоследствии без этого ограничения):
library(zoo)
library(chron)
# this assumes we want to store times to the second
tt <- times(as.character(DF$times))
z <- zoo(DF$values, tt)
plot(z, xaxt = "n")
# custom axis - assumes sufficiently many points to get reasonable graph
# round tick mark locations to the minute and remove the seconds from label
axt <- trunc(times(axTicks(1)), "min")
axis(1, at = axt, lab = sub(":..$", "", axt))
Приведенный выше способ создания z может быть альтернативно заменен этим.Он работает вне зависимости от того, существует ли более одной точки в минуту, поскольку агрегирует их в минуту:
# with this z we will be store times to the minute
z <- read.zoo(DF, FUN = function(x) trunc(times(as.character(x)), "min"),
aggregate = mean)
РЕДАКТИРОВАТЬ: построение и усечение.