Временная разрешенная сводная статистика из списка фреймов данных - PullRequest
0 голосов
/ 08 января 2020

Мне нужно рассчитать сводную статистику по списку фреймов данных в R. Фрейм данных - это временной ряд, в котором столбец даты отформатирован как POSIXct. Мне нужно рассчитать минимальное среднее и максимальное для каждой временной метки на кадрах данных. Фреймы данных не обязательно имеют одинаковые экстенты времени и даты, поэтому я не могу рассчитать статистику по индексу строки.

Ниже приведен минимальный пример формата данных, которые у меня есть.

date0 <- as.POSIXct("2020-01-01 00:00")

mylist <- list(df1 = data.frame(date = seq.POSIXt(from=date0,
                                              by = "1 hour",
                                              length.out = 24),
                            y = rep(1,24)),
           df2 = data.frame(date = seq.POSIXt(from=date0,
                                              by = "1 hour",
                                              length.out = 48),
                            y = rep(0,48))
           )

Поэтому в качестве выходных данных мне необходим кадр данных со столбцами date, min, mean и max. Любая помощь будет принята с благодарностью

1 Ответ

1 голос
/ 12 января 2020

Вы можете сделать это с помощью dplyr следующим образом:

library(dplyr)

# Creating data
date0 <- as.POSIXct("2020-01-01 00:00")

mylist <- list(
  df1 = 
    data.frame(date = seq.POSIXt(from=date0, by = "1 hour", length.out = 24), y = rep(1,24)),

  df2 = data.frame(date = seq.POSIXt(from=date0, by = "1 hour", length.out = 48), y = rep(0,48))
)

# Calculation
result <-
  mylist %>%
  # Convert list of dataframes into single dataframe
  bind_rows() %>%
  # Grouping by timestamp
  group_by(date) %>%
  # Calculating summary statistics
  summarise(min_y = min(y),
            max_y = max(y),
            mean_y = mean(y))

result

# date                min_y max_y mean_y
# <dttm>              <dbl> <dbl>  <dbl>
# 2020-01-01 00:00:00     0     1    0.5
# 2020-01-01 01:00:00     0     1    0.5
# 2020-01-01 02:00:00     0     1    0.5
# 2020-01-01 03:00:00     0     1    0.5
# 2020-01-01 04:00:00     0     1    0.5
# 2020-01-01 05:00:00     0     1    0.5
# 2020-01-01 06:00:00     0     1    0.5
# 2020-01-01 07:00:00     0     1    0.5
# 2020-01-01 08:00:00     0     1    0.5
# 2020-01-01 09:00:00     0     1    0.5
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...