Как сделать несколько графиков, используя данные в одном столбце в R? - PullRequest
0 голосов
/ 19 апреля 2020

Допустим, у меня есть следующий фрейм данных:

ID     amount_ID   timespan    change
3      1           20          2
3      2           40          3
3      3           60          6
3      4           80          4
3      5           100         5
9      1           25          1
9      2           50          -2
9      3           75          0
9      4           100         -1
3      1           33.33       4
3      2           66.67       8
3      3           100         7
9      1           33.33       1
9      2           66.67       3
9      3           100         4

Я хочу сделать 2 графика с этими данными, один для ID 3 и один для ID 9. timespan находиться на оси X, а change должно быть на оси Y. Как вы можете видеть, максимальная длина оси X составляет 100 на ID. Но я хочу сделать график, где изменение является средним значением всех предыдущих изменений в прошлом от того же ID. По сути, мне нужно сложить все изменения за промежуток времени для отдельного идентификатора и разделить его на время, когда присутствует конкретное число ID. Проблема заключается в том, что временной интервал может быть различным в пределах определенного идентификатора (здесь идентификатор 3 сначала имеет 5 сумм, а затем имеет 3 суммы, идентификатор 9 сначала имеет 4 суммы, а затем имеет 3 суммы).

Здесь это наглядный пример

Надеюсь, вы мне поможете !!! Спасибо!

1 Ответ

0 голосов
/ 19 апреля 2020

Мы можем использовать cummean для расчета скользящего среднего для каждого timespan. Также facets полезно показывать каждые ID на отдельном графике.

library(ggplot2)
library(dplyr)

df %>%
  arrange(ID, timespan) %>%
  group_by(ID) %>%
  mutate(change = cummean(change)) %>%
  ggplot() + aes(timespan, change) + 
  geom_line() + 
  facet_wrap(.~ID, scales = "free_y")

enter image description here

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