Вот пример с поддельными данными, которые, я надеюсь, похожи на ваши данные.
library(tidyverse)
library(lubridate)
# Create fake data
set.seed(2)
n=1e3
dat = data_frame(date = sample(seq(ymd("2015-01-01"), ymd("2015-02-28"), length=60), n, replace=TRUE),
comment=sample(LETTERS[1:5], n, replace=TRUE),
value=sample(1:100, n, replace=TRUE))
# Convert date to factor to match your data
dat$date = format(dat$date, "%m/%d/%Y")
dat$date = factor(dat$date)
Хорошо, теперь мы готовы начать.Сначала мы конвертируем ваши значения "date" в класс Date класса R.Сейчас ваши даты закодированы как фактор-класс, что означает, что R рассматривает их как категориальную переменную.Преобразование его в класс Date приведет к тому, что ggplot будет рассматривать их как даты, а не категории.Мы будем использовать функцию lubridate mdy
(сокращение от месяца-дня-года, которое является порядком значений в столбце даты).
# Convert date to Date class
dat$date = mdy(dat$date)
Теперь есть два варианта.Предварительно суммируйте данные и передайте обобщенные данные в ggplot:
dat %>%
group_by(date, comment) %>%
summarise(value=sum(value)) %>%
ungroup %>%
ggplot(aes(date, value, colour=comment)) +
geom_line() +
geom_point()
Или позвольте ggplot позаботиться о сводке за вас:
ggplot(dat, aes(date, value, colour=comment)) +
stat_summary(fun.y=sum, geom="line") +
stat_summary(fun.y=sum, geom="point")
В любом случае, график выглядит такэто:
Сводка ggplot здесь была проще, но иногда вам потребуется дополнительная гибкость обработки данных вне ggplot.