Мне нужно проанализировать почасовые данные, и я хотел бы знать, могу ли я группировать данные на 3, 6, 12, 24 часа, используя R. Я пробовал с aggregate
, но мне это не удалось. Кто-нибудь знает, как это сделать?Групповые данные по разным временным интервалам (3,6,12,24 часа)
-1
A
ответ
2
Я не уверен, что выглядит ваши данные, как, так что я буду использовать тривиальные набор данных, чтобы продемонстрировать некоторые из возможностей с data.table
пакета:
# options(continue=" ")
library(data.table)
##
set.seed(123)
Dt <- data.table(
Date=rep((Sys.Date()-364)+0:364,each=24),
Hour=rep(0:23,365),
Value=rnorm(24*365))
Вы можете группировать интервалами различных часов используя целочисленное деление, %/%
:
# 3 Hours
> Dt[,list(Mean=mean(Value)),
by=list(FromHour=3*(Hour%/%3),
ToHour=(3*(Hour%/%3))+2)]
FromHour ToHour Mean
1: 0 2 0.035449102
2: 3 5 0.036266830
3: 6 8 -0.013018137
4: 9 11 -0.024109474
5: 12 14 -0.019402564
6: 15 17 -0.009076756
7: 18 20 0.040802064
8: 21 23 -0.015103750
# 6 Hours
> Dt[,list(Mean=mean(Value)),
by=list(FromHour=6*(Hour%/%6),
ToHour=(6*(Hour%/%6))+5)]
FromHour ToHour Mean
1: 0 5 0.03585797
2: 6 11 -0.01856381
3: 12 17 -0.01423966
4: 18 23 0.01284916
Или с добавлением ежедневного размера,
> Dt[,list(Mean=mean(Value)),
by=list(Date,
FromHour=3*(Hour%/%3),
ToHour=(3*(Hour%/%3))+2)]
Date FromHour ToHour Mean
1: 2013-11-10 0 2 0.25601839
2: 2013-11-10 3 5 0.63828704
3: 2013-11-10 6 8 -0.49699929
4: 2013-11-10 9 11 0.37941122
5: 2013-11-10 12 14 -0.01479566
---
2916: 2014-11-09 9 11 0.69827715
2917: 2014-11-09 12 14 -0.40997757
2918: 2014-11-09 15 17 -0.36256883
2919: 2014-11-09 18 20 0.43272162
2920: 2014-11-09 21 23 0.67656169
Если вы хотите получить более полное агрегирование, например. с помощью summary
, вы могли бы сделать что-то вроде этого:
summaryNames <- c(
"Min","Q1","Med",
"Mean","Q3","Max")
#
Hourly.6 <- Dt[,sapply(.SD,function(x){
as.list(summary(x))
}),
.SDcols="Value",
by=list(FromHour=6*(Hour%/%6),
ToHour=(6*(Hour%/%6))+5)]
setnames(Hourly.6,3:8,summaryNames)
> head(Hourly.6)
FromHour ToHour Min Q1 Med Mean Q3 Max
1: 0 5 -3.414 -0.6494 0.037340 0.03586 0.7127 3.421
2: 6 11 -3.189 -0.6488 -0.023940 -0.01856 0.6187 3.272
3: 12 17 -3.467 -0.6743 -0.015590 -0.01424 0.6879 3.446
4: 18 23 -3.845 -0.6761 0.002263 0.01285 0.7258 3.848
#
Daily.12h <- Dt[,sapply(.SD,function(x){
as.list(summary(x))
}),
.SDcols="Value",
by=list(Date,
FromHour=12*(Hour%/%12),
ToHour=(12*(Hour%/%12))+11)]
setnames(Daily.12h,4:9,summaryNames)
> head(Daily.12h)
Date FromHour ToHour Min Q1 Med Mean Q3 Max
1: 2013-11-10 0 11 -1.265 -0.4744 0.0999 0.19420 0.65170 1.715
2: 2013-11-10 12 23 -1.967 -0.8032 -0.3454 -0.21150 0.42500 1.787
3: 2013-11-11 0 11 -1.687 -0.3776 0.5576 0.18420 0.84790 1.254
4: 2013-11-11 12 23 -1.265 -0.5237 -0.3432 -0.08151 0.09205 2.169
5: 2013-11-12 0 11 -1.549 -0.0530 0.1699 0.24280 0.63350 1.516
6: 2013-11-12 12 23 -2.309 -0.6314 -0.1401 -0.13080 0.39680 2.050
Смежные вопросы
- 1. Sql Server 2012 - Групповые данные по разным временным интервалам
- 2. Группировка сообщений по временным интервалам
- 3. Функция Matlab по разным интервалам
- 4. Групповые данные. Табличные даты в группы по последовательным временным интервалам (разделение пробелами)
- 5. Группировка временных рядов по временным интервалам
- 6. группировка результатов запроса по временным интервалам агрегирование
- 7. слить таблицы данных по временным интервалам перекрытия
- 8. Сводных данных по равноотстоящим временным интервалам R
- 9. Postgresql: подсчитать количество записей по временным интервалам
- 10. Django/Python: результаты группы по временным интервалам
- 11. Расчет внутридневных подсвечников по временным интервалам
- 12. Как перевернуть div по временным интервалам
- 13. Создайте ежемесячное среднее по временным интервалам
- 14. Группировка кадров данных панд по временным интервалам
- 15. Реализация асинхронных задач, вызванных по временным интервалам
- 16. RethinkDB - Как группировать по агрегированным временным интервалам
- 17. Группа запросов MySQL временной интервал по временным интервалам
- 18. Группа по временным интервалам от отметки времени Unix
- 19. Векторные операции по временным интервалам, в R ??, aggregate
- 20. Как получить количество записей по уникальным временным интервалам?
- 21. Как назначать случаи нерегулярным временным интервалам?
- 22. Как вычесть столбцы pandas, которые соответствуют разным временным интервалам в python?
- 23. Группировка по интервалам
- 24. SQL, запрос по интервалам времени
- 25. Мерцающие кнопки с разным временным интервалом
- 26. Классифицировать вектор по интервалам
- 27. Групповые данные из нескольких столбцов в csv в Python по временным меткам за определенный промежуток времени
- 28. Усреднение по временным интервалам для предшествующего 5-минутного бина из даты и времени
- 29. Как рассчитать среднегодовые данные по временным рядам
- 30. Группировка по 90-минутным интервалам
Пожалуйста, предоставьте несколько строк данных, а также код, который вы использовали – akrun
Пожалуйста, см [как сделать воспроизводимый пример] (http://stackoverflow.com/questions/ 5963269/как к Make-A-пра-р-воспроизводимый-пример) –