В настоящее время я создал следующий фрейм данных в R, но у меня проблемы с визуализацией.
Датафрейм выглядит следующим образом:
date weekday dayhour amount
2017-06 0 1 100
2017-06 0 2 200
2017-06 0 3 150
2017-06 0 4 600
2017-06 0 5 75
....
2018-06 6 21 60
2018-06 6 22 90
2018-06 6 23 150
2018-06 6 24 110
Сумма - это среднее значение этого дня по часам за этот месяц. Так, например, месяц июнь 2017 года в первый час каждого понедельника июня имеет в среднем 100.
Теперь идея состоит в том, чтобы отобразить мои данные в R на нескольких графиках, которые будут показывать мне данные по часам по дням недели для данного месяца. Таким образом, 12 графиков с каждым количеством на оси у и час + день недели на оси х.
Я пробовал несколько подходов, таких как циклическое прохождение месяцев и построение их с помощью par (mfrow = c (2,6)). Также я попытался построить их один за другим. Однако я все еще новичок в R, и я не могу найти хорошую документацию или учебное пособие о том, как это сделать. На данный момент мне удалось только собрать точки данных в один цикл по дням недели, а не по часам, выполнив следующие действия с набором данных без часов:
increase = 7
for (i in (length(occupancy_by_day)/7)) {
data = head(occupancy_by_day,increase:increase+increase)
plot(average_occupancy ~ Weekday, data=data)
increase = increase + 7
}
Мое ближайшее предположение к правильному ответу в данный момент примерно такое:
par(mfrow = c(2,6))
increase = 06
for (i in (length(occupancy_by_day)/30,5)) {
data = occupancy_by_day[occupancy_by_day$date == paste(c('2017-',increase)), ]
plot(amount ~ weekday, data=data)
increase = increase + 1
}
Это дает мне ошибку:
Error in plot.window(...) : need finite 'xlim' values
Кто-нибудь знает хорошее решение для построения данных в R?
Заранее спасибо за любую помощь / комментарии!
EDIT:
Приоритетом в этом посте будет то, как вывести данные по часам за днем недели Я мог бы повторять месяцы вручную, однако мне все равно нужно было бы их построить. Цикл за каждый месяц будет добавлен бонус. Прямо сейчас у меня есть следующее:
data =occupancy_by_day[occupancy_by_day$date == '2017-06', ]
plot(Amount ~ weekday+dayhour, data=data)
Это, к сожалению, выводит данные только по дням.
ДОБАВЛЕНА ЧЕРТЕЖ КОНЦЕПЦИИ:
https://imgur.com/qKFbbmJ
ОТВЕТ:
В конце концов я сделал небольшой обходной путь, чтобы построить их с помощью:
ggplot(data = data[data$date == '2017-12', ], aes(plotstamp, Amount, group=Weekday, col=Weekday)) +
geom_line() +
geom_point() +
ggtitle("December 2017")
plotstamp - это дополнительный столбец / индекс, который я добавил к своему DF, что позволило мне непрерывно отображать значения. Тогда я просто строил их отдельно в месяц.