график рассеяния среднего, максимального и минимального значений с указанием даты и времени - PullRequest
0 голосов
/ 02 февраля 2020

Я впервые работаю с таблицей, содержащей даты и время, и я действительно изо всех сил пытаюсь сделать то, что мне показалось, простым сюжетом. Таблица выглядит следующим образом:

library(dplyr)

df <- tribble(
    ~A,                   ~B
    , "2018-01-01 18:33:00", "2018-01-06 16:00:00"
    , "2018-01-01 19:37:00", "2018-01-14 15:30:00"
    , "2018-01-01 19:52:00", "2018-03-29 15:00:00"
    , "2018-01-01 20:23:00", "2018-02-26 15:00:00"
    , "2018-01-01 20:47:00", "2018-02-03 15:30:00"
    , "2018-01-02 01:07:00", "2018-01-06 15:30:00"
    , "2018-01-02 03:57:00", "2018-01-05 15:00:00"
    , "2018-01-02 14:10:00", "2018-01-13 15:30:00"
    , "2018-01-02 17:55:00", "2018-01-10 15:30:00"
    , "2018-01-02 18:11:00", "2018-03-04 15:00:00"
    , "2018-01-02 18:22:00", "2018-01-25 15:00:00"
    , "2018-01-02 18:36:00", "2018-01-09 15:00:00"
    , "2018-01-02 18:49:00", "2018-02-04 15:00:00"
    , "2018-01-02 20:08:00", "2018-02-05 15:30:00"
    , "2018-01-02 22:21:00", "2018-01-22 15:00:00"
    , "2018-01-02 22:25:00", "2018-02-04 15:30:00"
    , "2018-01-03 02:20:00", "2018-02-25 16:00:00"
    , "2018-01-03 09:19:00", "2018-01-09 15:00:00"
    , "2018-01-03 09:51:00", "2018-01-13 15:30:00"
    , "2018-01-03 09:55:00", "2018-03-10 13:00:00"
    , "2018-01-03 10:07:00", "2018-02-01 15:00:00"
    , "2018-01-03 11:57:00", "2018-04-07 15:00:00"
    , "2018-01-03 12:00:00", "2018-01-26 15:00:00"
    , "2018-01-03 12:09:00", "2018-01-04 15:30:00"
    , "2018-01-03 12:31:00", "2018-01-08 15:00:00"
    , "2018-01-03 12:36:00", "2018-02-19 16:00:00"
)

Есть несколько точек на каждый день, и я хотел бы создать диаграмму рассеяния, содержащую только среднее значение, максимум и минимум на каждый день.

Как я могу это сделать? Заранее спасибо. Andre

1 Ответ

0 голосов
/ 02 февраля 2020
library(tidyverse) # for manipulating data
library(lubridate) # for working with dates

df <- tribble(
    ~A,                   ~B
    , "2018-01-01 18:33:00", "2018-01-06 16:00:00"
    , "2018-01-01 19:37:00", "2018-01-14 15:30:00"
    , "2018-01-01 19:52:00", "2018-03-29 15:00:00"
    , "2018-01-01 20:23:00", "2018-02-26 15:00:00"
    , "2018-01-01 20:47:00", "2018-02-03 15:30:00"
    , "2018-01-02 01:07:00", "2018-01-06 15:30:00"
    , "2018-01-02 03:57:00", "2018-01-05 15:00:00"
    , "2018-01-02 14:10:00", "2018-01-13 15:30:00"
    , "2018-01-02 17:55:00", "2018-01-10 15:30:00"
    , "2018-01-02 18:11:00", "2018-03-04 15:00:00"
    , "2018-01-02 18:22:00", "2018-01-25 15:00:00"
    , "2018-01-02 18:36:00", "2018-01-09 15:00:00"
    , "2018-01-02 18:49:00", "2018-02-04 15:00:00"
    , "2018-01-02 20:08:00", "2018-02-05 15:30:00"
    , "2018-01-02 22:21:00", "2018-01-22 15:00:00"
    , "2018-01-02 22:25:00", "2018-02-04 15:30:00"
    , "2018-01-03 02:20:00", "2018-02-25 16:00:00"
    , "2018-01-03 09:19:00", "2018-01-09 15:00:00"
    , "2018-01-03 09:51:00", "2018-01-13 15:30:00"
    , "2018-01-03 09:55:00", "2018-03-10 13:00:00"
    , "2018-01-03 10:07:00", "2018-02-01 15:00:00"
    , "2018-01-03 11:57:00", "2018-04-07 15:00:00"
    , "2018-01-03 12:00:00", "2018-01-26 15:00:00"
    , "2018-01-03 12:09:00", "2018-01-04 15:30:00"
    , "2018-01-03 12:31:00", "2018-01-08 15:00:00"
    , "2018-01-03 12:36:00", "2018-02-19 16:00:00"
)


df <- df %>% # take the dataframe
    mutate(A = ymd_hms(A) # turn strings into datetimes
           , B = ymd_hms(B)) %>%
    mutate(date_of_A = floor_date(A, unit = "days")) %>% # write the date of A into a new column
    mutate(difference = B - A) %>% # calculate the difference
    group_by(date_of_A) %>% # and now per date...
    summarise(avg_time_difference = mean(difference) # calculate the mean...
              , max_time_difference = max(difference) # the max...
              , min_time_difference = min(difference)) # and the min of the difference

df %>%
    gather("variable", "value", -date_of_A) %>%
    ggplot(aes(date_of_A, value, colour = variable)) +
    geom_point()

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...