R ряд временного ряда - PullRequest
       3

R ряд временного ряда

1 голос
/ 08 января 2020

У меня есть очень большой набор данных, который я хотел бы проиллюстрировать, используя график в R. Образец моего набора данных показан ниже:

    > new_data_2
# Groups:   newdatum [8]
  date       activity       totaal
  <date>     <fct>          <int>
1 2019-11-21 N11            144
2 2019-09-22 N11            129
3 2019-05-15 N22            117
4 2019-01-23 N22            12
5 2019-07-04 N22            12
6 2019-07-18 N22            12
...

Для каждого действия, которое я хочу отобразить сумму (всего ) за дату (дату) на графике временного ряда. Почему-то я не понимаю, как правильно в R. Как-то мне нужно сгруппировать свою активность для отображения, но я не могу понять это.

new_data_2 %>% 
group_by(activity) %>% 
plot_ly(x=new_data_2$newdatum) %>% 
add_lines(y=~new_data_2$totaal, color = ~factor(newdatum))

Она отображает пустой график, а не с ' активность "на левой стороне.

Чего я хочу достичь:

this image

Ответы [ 2 ]

1 голос
/ 08 января 2020

Вы на правильном пути, но после group_by() вам нужно сказать R сделать что-то с группами.

new_data_2 %>%
  group_by(activity, date) %>%  # use two groupings since you want by activity & date 
  summarise(totaal_2 = sum(totaal))

Это должно добраться до искомого кадра данных. Вы можете использовать ggplot & plotly на нем оттуда.

Я бы рекомендовал сначала изменить данные (как указано выше), сохранить их как новый объект и затем отобразить их в виде графика. Это поможет вам увидеть каждый шаг на этом пути. Трубы %>% великолепны, но могут затруднить просмотр каждого шага.

0 голосов
/ 09 января 2020

Поначалу это может быть неочевидно, но структура ваших данных идеально подходит для графиков с несколькими временными рядами. Вам даже не нужно беспокоиться о функции group_by. Ваш набор данных, похоже, имеет длинный формат , где даты в date column и имена в activity column не являются уникальными. Но у вас будет только одна переменная на действие и дату.

При правильных спецификациях plot_ly() сгруппирует ваши данные, используя color=~activity, например: p <- plot_ly(new_data2, x = ~date, y = ~totall, color = ~activity) %>% add_lines(). Поскольку вы не предоставили достаточно большой образец данных, я буду использовать встроенный набор данных economics_long, чтобы показать вам, как вы можете это сделать. Прежде всего, обратите внимание, как структура моего набора данных соответствует вашей:

           date variable value
1    1967-07-01  psavert  12.5
2    1967-08-01  psavert  12.5
3    1967-09-01  psavert  11.7
4    1967-10-01  psavert  12.5
5    1967-11-01  psavert  12.5
6    1967-12-01  psavert  12.1
...

Сюжет:

enter image description here

Код:

library(plotly)
library(dplyr)

# data
data("economics_long")
df <- data.frame(economics_long)

# keep only some variables that have values on a comparable level
df <- df %>% filter(!(variable %in% c('pop', 'pce', 'unemploy')))

# plotly time series
p <- plot_ly(df, x = ~date, y = ~value, color = ~variable) %>%
  add_lines()

# show plot
p
...