2015-06-08 3 views
2

Предположим, что у нас есть столбец временных столбцов и столбец значений, и мы хотим агрегировать столбец значений в соответствии с интервалом времени 15 или 20 минут. Как бы вы это сделали в R? Ниже приведен образец для подготовки данных.Совокупные данные на основе определенного временного диапазона

start <- as.POSIXct("2015-06-01") 
interval <- 1 # 1 minute interval 
end <- start + as.difftime(1, units="days") 
timestamps = as.numeric(seq(from=start, by=interval*60, to=end)) 
values = rnorm(length(timestamps)) 
dt = data.frame(timestamps,values) 

ответ

1

Лучше использовать xts пакет, когда вы имеете дело с объектами временных рядов:

library(xts) 
xx <- xts(values,order.by = timestamps) 
## aggregate by mean/sum 
period.apply(xx,endpoints(xx,'minutes',15),mean) 

где timestamps

timestamps = seq(from=start, by=interval*60, to=end) 
+0

Существует проблема с этим методом. Если данные разделены интервалом в 20 минут, он все равно создает 3 записи в течение часа. Хотя мы знаем, что в течение часа, если мы агрегируем данные с использованием 15-минутного интервала, один из интервалов должен быть равен нулю. –

+0

@YaserKenesh извините, но я не понимаю здесь. – agstudy

+0

ну, попробуйте приведенный выше код с интервалом = 20. Вы увидите это, а не 4 записи за каждый час (согласно нашему 15-минутному агрегату), мы получаем 3 записи. Например, начиная с 12:00 мы должны иметь записи за 12: 00,12: 15,12: 30,12: 45. Однако, с интервалом в 20 минут, мы получаем только такие данные, как это 12:00, 12:20, 12:40. –

Смежные вопросы