Oi, pessoal, tudo bem? Tenho um data frame de séries temporais com 24 colunas (que são as séries temporais) que tem 600 linhas cada uma. Precisava fazer a média de 10 em 10 pontos de forma que no final eu tivesse 24 colunas com 60 linhas cada um. Vocês conseguiriam me ajudar?
É possível fazer algo assim, talvez não seja a melhor forma…
A ideia é usar a função ntile
que pega uma sequência e quebra em grupos de tamanhos iguais.
library(tidyverse)
x <- matrix(runif(24*600), ncol = 24)
x <- as.data.frame(x)
x$data <- seq(from = as.Date("2020-01-01"), length.out = 600, by ="1 day")
x %>%
group_by(g = ntile(row_number(data), n = 60)) %>%
summarise_all(mean)
#> # A tibble: 60 x 26
#> g V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
#> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
#> 1 1 0.440 0.596 0.629 0.493 0.413 0.409 0.578 0.410 0.462 0.477 0.671 0.306
#> 2 2 0.395 0.573 0.491 0.399 0.437 0.504 0.496 0.665 0.738 0.762 0.549 0.477
#> 3 3 0.566 0.664 0.653 0.484 0.603 0.484 0.519 0.547 0.511 0.517 0.501 0.587
#> 4 4 0.682 0.663 0.609 0.419 0.526 0.445 0.508 0.343 0.597 0.617 0.398 0.482
#> 5 5 0.546 0.657 0.344 0.544 0.559 0.443 0.545 0.448 0.398 0.631 0.676 0.546
#> 6 6 0.292 0.473 0.424 0.637 0.365 0.459 0.425 0.420 0.484 0.564 0.401 0.309
#> 7 7 0.421 0.319 0.617 0.430 0.444 0.523 0.565 0.543 0.649 0.648 0.454 0.576
#> 8 8 0.435 0.489 0.490 0.530 0.458 0.590 0.445 0.463 0.565 0.557 0.460 0.516
#> 9 9 0.487 0.427 0.481 0.338 0.534 0.506 0.530 0.704 0.337 0.489 0.608 0.421
#> 10 10 0.504 0.534 0.378 0.552 0.672 0.448 0.633 0.413 0.503 0.536 0.518 0.343
#> # … with 50 more rows, and 13 more variables: V13 <dbl>, V14 <dbl>, V15 <dbl>,
#> # V16 <dbl>, V17 <dbl>, V18 <dbl>, V19 <dbl>, V20 <dbl>, V21 <dbl>,
#> # V22 <dbl>, V23 <dbl>, V24 <dbl>, data <date>
Created on 2020-05-10 by the reprex package (v0.3.0)
3 curtidas
Poxa, gostei muito da solução! Era exatamente o que eu queria! Obrigado!
1 curtida