Как я могу создать визуализацию распределения для среднего дня? - PullRequest
0 голосов
/ 18 ноября 2018

В R мой фрейм данных ("sampledata") выглядит так:

data in R

  • Столбец метки времени - POSIXct, формат: "2018-10-01 00:03:23 "
  • Столбец состояния - это фактор с 3 уровнями" ДОСТУПНО "," MUST_NOT_RUN "," MUST_RUN "
  • . Имеется 6 уникальных идентификатора устройства.Временные метки для каждого устройства не совпадают, то есть данные не всегда собирались в одну и ту же минуту для каждого устройства.В некоторых случаях существует несколько записей в минуту для одного и того же устройства.

Я хочу преобразовать данные в визуализацию, которая показывает распределение «состояния» по «типичному» дню.В идеале, что-то вроде этого:

Desired Visualization

Я пытался подсчитать каждое вхождение "состояния", сгруппированных по минутным временным отметкам, но не удалось (Ошибка: может 'сумма факторов).Я пытался использовать ggplot и geom_area для визуализации, но считаю, что мне нужно реструктурировать свои данные, прежде чем они будут работать.Очень плохо знаком с R (очевидно).Буду рад прочитать любые учебные пособия или ссылки, представленные в качестве фона, и будем благодарны за любую помощь, которую вы можете оказать.Спасибо!

Другая информация, которая может / не может быть полезна:

  • Есть несколько столбцов в кадре данных, которые не показаны.
  • 223 446 записей между 10 /2/18 - 11/8/18.

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете взять часы из отметок времени, а затем вычислить пропорции ваших состояний по часам:

library(ggplot2)
library(plyr)

#get hours from timestamp
obj$hour <- as.POSIXlt(obj$timestamp)$hour 

#get average state proportions per hour
plot_obj <- ddply(obj,.(hour), #take data.frame "obj" and group by "hour"
      function(x) with(x,                      
                         data.frame(100*table(state)/length(state))))



ggplot(plot_obj, aes(x=hour,y=Freq,fill=state)) +
  geom_area()
...