Расчет почасовой мин / макс с данными ymd_hms - PullRequest
0 голосов
/ 01 сентября 2018

Я хотел бы рассчитать максимальный час для нескольких переменных во фрейме данных, где мои данные выглядят так:

Date                   Gas     Diesel
2018-01-01 00:00:00     1.5       2.5
2018-01-01 00:01:00     1.7       1.9
2018-01-01 00:02:00     2.2       1.7
---
---
2018-01-01 01:00:00     2.0       1.0
2018-01-01 01:02:00     2.0       1.0

И мой ожидаемый результат:

 Date                max.Gas     max.Diesel
2018-01-01 00:00:00   2.2          2.5
2018-01-01 01:00:00   2.0          1.0

Есть какие-нибудь мысли о том, как я могу добиться этого в R, предпочтительно в стиле Tidyverse?

1 Ответ

0 голосов
/ 01 сентября 2018

Подход dplyr / tidyverse:

# load tidyverse packages
library(dplyr)
library(lubridate)

# create example data
mydf <- tibble(
    date   = ymd_hms(c("2018-01-01 00:00:00", "2018-01-01 00:01:00", "2018-01-01 00:02:00", "2018-01-01 01:00:00", "2018-01-01 01:01:00")),
    gas    = c(1.5, 1.7, 2.2, 2.0, 2.0),
    diesel = c(2.5, 1.9, 1.7, 1.0, 1.0)
)

# create a new variable "datehour" and get max(gas) by datehour
mydf %>% 
    mutate(datehour = floor_date(date, unit="hour")) %>% 
    group_by(datehour) %>% 
    summarize(maxgas = max(gas), maxdiesel = max(diesel))

Чтобы сделать это для многих столбцов без ввода, например, maxgas = max(gas) для каждого столбца, используйте summarize_all:

mydf %>% 
    mutate(datehour = floor_date(date, unit="hour")) %>% 
    select(-date) %>% 
    group_by(datehour) %>% 
    summarize_all(max)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...