Вычислить среднее значение значений в минуту по сводной таблице по дате и станции в R

#r #pivot-table

#r #сводная таблица

Вопрос:

спасибо за ваше время, не могли бы вы помочь мне с этой таблицей данных?

У меня есть такой набор данных:

Станция Дата Значение
St1 22/01/2021 11:25:45 5,703
St1 22/01/2021 11:25:46 4,603
St1 22/01/2021 11:25:47 3,703
St2 22/01/2021 11:25:45 5,803
St2 22/01/2021 11:25:46 5,223
St3 22/01/2021 11:25:45 6,333
St3 22/01/2021 11:25:46 3,733

Я хотел бы получить подобную сводную таблицу:

Дата St1 St2 St3.
22/01/2021 11:25 Среднее значение минуты (11:25) Среднее значение минуты (11:25) Среднее значение минуты (11:25)
22/01/2021 11:26 Среднее значение минуты(11:26) Среднее значение минуты(11:26) Среднее значение минуты(11:26)

Спасибо за все ваши предложения!

Ответ №1:

Используйте ceiling_date от lubridate до округления значений даты и времени и преобразуйте данные в широкий формат.

 library(dplyr)
library(lubridate)
library(tidyr)

df %>%
  mutate(Date = ceiling_date(dmy_hms(Date), 'min'), 
         Value = parse_number(Value)) %>%
  pivot_wider(names_from = Station, values_from = Value, values_fn = mean)

#  Date                  St1   St2   St3
#  <dttm>              <dbl> <dbl> <dbl>
#1 2021-01-22 11:26:00 4670.  5513  5033
 

данные

 df <- structure(list(Station = c("St1", "St1", "St1", "St2", "St2", 
"St3", "St3"), Date = c("22/01/2021 11:25:45", "22/01/2021 11:25:46", 
"22/01/2021 11:25:47", "22/01/2021 11:25:45", "22/01/2021 11:25:46", 
"22/01/2021 11:25:45", "22/01/2021 11:25:46"), Value = c("5,703", 
"4,603", "3,703", "5,803", "5,223", "6,333", "3,733")), row.names = c(NA, 
-7L), class = "data.frame")