Как преобразовать почасовые данные в почасовые данные 6/12/24 - PullRequest
1 голос
/ 13 марта 2019

Я новичок здесь, а также R.

Например, у меня есть такие данные об осадках. Как видно из данных за день, у меня есть почасовые данные об осадках, и я хочу преобразовать эти почасовые данные в 6-часовые, 12-часовые и ежедневные данные, такие как образец. Как я могу добиться этого в R?

sample data

Ответы [ 2 ]

2 голосов
/ 03 апреля 2019

Существует множество способов агрегирования в R. См. Функции группировки (tapply, by, aggregate) и * apply family

Вот еще один способ с tapply:

# input data (since OP contains none)
> v = replace(numeric(24), c(3:4, 6:10), c(0.6, 0.2, 0.2, 3.2, 0.8, 0.4, 1))
> 
> lapply(c(1, 6, 12, 24), function(n) tapply(v, rep(1:24, each=n, length.out=24), sum))
[[1]]
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24 
0.0 0.0 0.6 0.2 0.0 0.2 3.2 0.8 0.4 1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 

[[2]]
  1   2   3   4 
1.0 5.4 0.0 0.0 

[[3]]
  1   2 
6.4 0.0 

[[4]]
  1 
6.4 
2 голосов
/ 03 апреля 2019

Я решил это с кодами ниже.

    y<-as.matrix(sapply(x, as.numeric)) 
h<-sapply(c(6, 12, 24), function(hrs) colSums(matrix(y, ncol=length(x)/hrs)))
...