Eu tenho um quadro de dados parecido com este:
structure(list(datetime = structure(c(1559347200, 1559350800,
1559354400, 1559358000, 1559361600, 1559365200, 1559368800, 1559372400,
1559376000, 1559379600), tzone = "UTC", class = c("POSIXct",
"POSIXt")), BUSwt = c(77.8154, 77.2538, 76.9325, 76.81235, 76.6544,
76.3403, 76.16165, 76.22375, 76.47035, 76.74395), MBwt = c(78.3653,
78.53495, 78.6074, 78.30725, 78.0368, 77.9477, 77.8946, 77.927,
78.12455, 78.23615), SUSwt = c(76.2575, 76.0055, 75.7265, 75.425,
75.137, 74.849, 74.651, 74.624, 74.696, 74.8535)), row.names = c(NA,
-10L), class = c("tbl_df", "tbl", "data.frame"))
Possui 5 anos de dados de data e hora para as três colunas variáveis "BUSwt", "MBwt" e "SUSwt". Quero calcular a média, o mínimo e o máximo dessas variáveis para cada data e hora específicas ao longo dos 5 anos de dados. Um exemplo desses dados seria:
datahora | BUSwt_mean | BUSwt_max | BUSwt_min | MBwt_mean | MBwt_max | MBwt_min | SUSwt_mean | SUSwt_max | SUSwt_min |
---|---|---|---|---|---|---|---|---|---|
06-01 00:00:00 | xx | xx | xx | xx | xx | xx | xx | xx | xx |
06-01 01:00:00 | xx | xx | xx | xx | xx | xx | xx | xx | xx |
06-01 02:00:00 | xx | xx | xx | xx | xx | xx | xx | xx | xx |
06-01 03:00:00 | xx | xx | xx | xx | xx | xx | xx | xx | xx |
06-01 04:00:00 | xx | xx | xx | xx | xx | xx | xx | xx | xx |
Meu código atual para criar o quadro de dados é assim:
WaterData <- BUSdata %>%
left_join(MBdata, by = "datetime") %>%
left_join(SUSdata, by = "datetime")
Existe uma maneira de fazer isso continuando em um cano?
Outra maneira de obter o que você precisa, usando a útil função
dplyr
de :across()
Esta solução separa mês, dia e hora em suas próprias colunas. Se você realmente precisa de um formato de data (por exemplo, para fins de plotagem), então você pode forçar tudo para o mesmo ano (não importa que ano seja), assim:
Aqui está uma solução, se bem entendi o problema.
Presumo que o problema seja calcular estatísticas agregadas por data/hora.