График данных со временем в R - PullRequest
0 голосов
/ 31 марта 2020

Я работаю с фреймом данных, включающим столбцы 'timestamp' и 'amount'. Данные могут быть получены так:

sample_size <- 40

start_date = as.POSIXct("2020-01-01 00:00")
end_date = as.POSIXct("2020-01-03 00:00")

timestamps <- as.POSIXct(sample(seq(start_date, end_date, by=60), sample_size))
amount <- rpois(sample_size, 5)

df <- data.frame(timestamps=timestamps, amount=amount)

Теперь я хотел бы построить сумму записей amount для некоторого периода (например, каждый час, 30 min, 20 min). Окончательный график будет выглядеть как гистограмма временных меток, но он должен не просто считать , сколько временных меток попало в таймфрейм, но и в том, какая сумма попала в таймфрейм.

Как я могу подойти к этому? Я мог бы создать дополнительный вектор с количеством каждого таймфрейма, но не знаю, как поступить.

Также я хотел бы добавить функцию, чтобы уменьшить на час. Так, что отображается только один день (обратите внимание, что диапазон между start_date и end_date равен двум дням), и на каждом таймфрейме (скажем, каждый час) наносится объем данных, находящихся в этом часе. В этом случае данные

2020-01-01 13:03:00  5
2020-01-02 13:21:00 10
2020-01-02 13:38:00  1
2020-01-01 13:14:00  3

дадут планку высоты sum(5, 10, 1, 3) = 19 на таймфрейме 13:00-14:00. Как я могу реализовать построение графиков, чтобы легко переключаться между этими двумя режимами (построение дней / график всего за один день и сокращение)?

РЕДАКТИРОВАТЬ: Следуя совету @Gregor Thomas, я добавил группировку столбец, подобный следующему:

df$time_group <- lubridate::floor_date(df$timestamps, unit="20 minutes")

Теперь мне интересно, как игнорировать даты и, таким образом, уменьшить их на 20 минут (независимо от даты).

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