Многострочные временные ряды неправильно форматируются

Base64

Base64 является общим термином для ряда аналогичных схем кодирования, которые кодируют двоичные данные, обрабатывая его численно и переводя его в представление базы 64. Термин Base64 исходит из конкретной кодировки передачи содержимого MIME.

Схемы кодирования Base64 обычно используются, когда необходимо кодировать двоичные данные, которые необходимо хранить и передавать по носителям, которые предназначены для обработки текстовых данных , Это делается для того, чтобы данные сохранялись без изменений во время транспортировки. Base64 обычно используется в ряде приложений, включая электронную почту через MIME, и хранение сложных данных в XML.

2
задан gooponyagrinch 15 January 2019 в 19:33
поделиться

3 ответа

Сложнее всего иметь столбец в вашем наборе данных в качестве даты. Давай сделаем это вместе. Во-первых, давайте использовать эти данные для решения нашей проблемы:

sample_data <- structure(list(purchase_month = structure(c(17713, 17744, 17775,
  17805, 17713, 17744, 17775, 17805), class = "Date"), type = structure(c(2L,
  2L, 2L, 2L, 1L, 1L, 1L, 1L), .Label = c("domestic", "local"), class = "factor"), 
  orders = c(199, 231, 222, 190, 1102, 924, 999, 779)), row.names = c(NA, 
  -8L), class = "data.frame")

Это данные, которые мы будем использовать:

sample_data
  purchase_month     type orders
1        2018-07    local    199
2        2018-08    local    231
3        2018-09    local    222
4        2018-10    local    190
5        2018-07 domestic   1102
6        2018-08 domestic    924
7        2018-09 domestic    999
8        2018-10 domestic    779

Обратите внимание, что purchase_month не является датой. Я преобразую его в дату, добавив -01 к ее концу, потому что каждая дата в R нуждается в дне. Так как вас интересуют месяцы, мы можем использовать любой день здесь. Затем я буду использовать функцию ymd из пакета lubridate, чтобы сообщить R, что наши строки имеют формат год-месяц-день:

library(lubridate)
sample_data$purchase_month <- ymd(paste0(sample_data$purchase_month, "-01"))

Нет, вам просто нужно использовать свой собственный [1110 ] код для того, чтобы иметь ваш участок:

ggplot(data = sample_data, aes(x = purchase_month, y = orders)) + 
  geom_line(aes(color = type), size = 1) +
  scale_color_manual(values = c("#00AFBB", "#E7B800")) +
  theme_minimal()

enter image description here

0
ответ дан Marcus Nunes 15 January 2019 в 19:33
поделиться

Если мы изменим столбец purchase_month на класс yearmon, а затем укажем тот же масштаб X, он будет работать. Использование данных, воспроизводимых в примечании в конце:

library(zoo)

sample_data2 <- transform(sample_data, purchase_month = as.yearmon(purchase_month))

ggplot(data = sample_data2, aes(x = purchase_month, y = orders)) + 
  geom_line(aes(color = type), size = 1) +
  scale_color_manual(values = c("#00AFBB", "#E7B800")) +
  theme_minimal() +
  scale_x_yearmon()

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

library(zoo)

z <- read.zoo(sample_data, index = "purchase_month", split = "type", FUN = as.yearmon)

autoplot(z, geom = "blank", facet = NULL) + 
  geom_line(size = 1) +
  scale_color_manual(values = c("#00AFBB", "#E7B800")) +
  theme_minimal() +
  scale_x_yearmon()

Любой из них производит:

screenshot

Примечание

Lines <- "
purchase_month |   type   | orders
2018-07        | local    |    199
2018-08        | local    |    231
2018-09        | local    |    222
2018-10        | local    |    190
2018-07        | domestic |   1102
2018-08        | domestic |    924
2018-09        | domestic |    999
2018-10        | domestic |    779"
sample_data <- read.table(text = Lines, header = TRUE, sep = "|", strip.white = TRUE)
0
ответ дан G. Grothendieck 15 January 2019 в 19:33
поделиться

В вашем коде есть две ошибки:

  1. Столбец данных purchase_month не является объектом класса "Date".
  2. Вам нужно group данные по type.

Я имею в виду следующее.

sample_data$purchase_month <- as.Date(paste(sample_data$purchase_month, "01", sep = "-"))

ggplot(data = sample_data, 
       aes(x = purchase_month, y = orders, color = type), group = type) + 
  geom_line(size = 1) +
  scale_color_manual(values = c("#00AFBB", "#E7B800")) +
  theme_minimal()

enter image description here

0
ответ дан Rui Barradas 15 January 2019 в 19:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: