Это интересный вопрос; с распространением различных пакетов и методов временных рядов, должен быть подход для объединения нерегулярных временных рядов, кроме как грубой силой, которую предлагает OP. Вот один «высокоуровневый» способ получить интервалы, которые затем можно использовать для aggregate
и др., Используя версию cut
, определенную для chron
объектов.
require(chron)
require(timeSeries)
my.times <- "
2010-01-13 03:02:38 UTC
2010-01-13 03:08:14 UTC
2010-01-13 03:14:52 UTC
2010-01-13 03:20:42 UTC
2010-01-13 03:22:19 UTC
"
time.df <- read.delim(textConnection(my.times),header=FALSE,sep="\n",strip.white=FALSE)
time.seq <- seq(trunc(timeDate(time.df[1,1]),units="hours"),by=15*60,length=nrow(time.df))
intervals <- as.numeric(cut(as.chron(as.character(time.df$V1)),breaks=as.chron(as.character(time.seq))))
Вы получаете
intervals
[1] 1 1 1 2 2
, который теперь можно добавить к фрейму данных и агрегировать.
Приведенная выше акробатика (от символа к времени, от даты к символу и к хрону) немного неудачна, поэтому, если есть более чистые решения для объединения нерегулярных данных времени с использованием xts или любого другого пакета timeSeries, я бы хотел услышать их тоже! ..
Мне также любопытно узнать, какой будет наиболее эффективный подход для группировки больших высокочастотных нерегулярных временных рядов, например, создание 1-минутных баров объема по тиковым данным для очень ликвидного запаса.