Проблемы с правильным построением графика временных рядов - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь построить временной ряд из файла Excel в R Studio. В нем есть единственный столбец «Даты». Этот столбец содержит данные о посещениях клиентов с датой и временем в форме 15.02.2014 6:17:22. Дата и время изначально было в формате char, и я преобразовал его в значение Large POSIXct, используя lubridate:

tsData <- mdy_hms(fullUsage$Dates) 

, что дает мне значение:

POSIXct[1:25,354], format: "2018-04-13 10:18:14" "2018-04-14 13:27:11" .....

Затем я попытался преобразовать его в объект временного ряда с использованием кода ниже: require (xts)

visitTimes.ts <- xts(tsData, start = 1, order.by=as.POSIXct(tsData))

plot(visitTimes.ts)

ts_plot(visitTimes.ts)

ts_info(visitTimes.ts)

Я не уверен на 100%, но похоже, что график выходит с использованием общего количества посещений. Я считаю, что моя проблема может заключаться в правильной индексации моих данных с использованием дат. Заранее прошу прощения, если это простая проблема. Я все еще изучаю R. Я приложил снимок экрана с моим сюжетом.

график таймсерий

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Вам нужно подсчитать количество событий в каждый период времени и нанести эти значения на ось y. Вы не предоставили достаточно данных для воспроизводимого примера, поэтому я создал небольшой пример. Мы будем использовать пакеты tidyverse dplyr и lubridate, чтобы помочь нам здесь:

library(lubridate)
library(dplyr)
library(ggplot2)

set.seed(69)
fullUsage <- data.frame(Dates = as.POSIXct("2020-01-01") +
                                minutes(round(cumsum(rexp(10000, 1/25))))
                       )
head(fullUsage)
#>                 Dates
#> 1 2020-01-01 00:02:00
#> 2 2020-01-01 00:15:00
#> 3 2020-01-01 00:22:00
#> 4 2020-01-01 00:29:00
#> 5 2020-01-01 01:13:00
#> 6 2020-01-01 01:27:00

Прежде всего, мы создадим столбцы, которые показывают час дня и месяц, когда произошли события:

fullUsage$hours  <- hour(fullUsage$Dates)
fullUsage$month  <- floor_date(fullUsage$Dates, "month")

Теперь мы можем просто подсчитать количество событий в месяц и построить это число для каждого месяца:

fullUsage %>% 
  group_by(month) %>% 
  summarise(n = length(hours)) %>%
  ggplot(aes(month, n)) + 
  geom_col()

And we can do the same for the hour of day:

fullUsage %>% 
  group_by(hours) %>% 
  summarise(n = length(hours)) %>%
  ggplot(aes(hours, n)) + 
  geom_col() +
  scale_x_continuous(breaks = 0:23) +
  labs(y = "Hour of day")

Created on 2020-08-05 by the пакет REPEX (v0.3.0)

0 голосов
/ 05 августа 2020

да, вы правы, вам нужно указать столбец даты (ось x) и значение (ось y)

вот простой пример:

v1 <- data.frame(Date = mdy_hms(c("1-1-2020-00-00-00", "1-2-2020-00-00-00", "1-3-2020-00-00-00")), Value = c(1, 3, 6))
v2 <- xts(v1["Value"], order.by = v1[, "Date"])
plot(v2)

первый аргумент xts принимает значения x в порядке. я оставляю фактический объект ts

...