# Загрузка необходимых пакетов
library(dplyr)
##
## Присоединяю пакет: 'dplyr'
## Следующие объекты скрыты от 'package:stats':
##
## filter, lag
## Следующие объекты скрыты от 'package:base':
##
## intersect, setdiff, setequal, union
library(lubridate)
##
## Присоединяю пакет: 'lubridate'
## Следующие объекты скрыты от 'package:base':
##
## date, intersect, setdiff, union
library(ggplot2)
library(DT)
## Warning: пакет 'DT' был собран под R версии 4.3.3
library(scales)
library(ggthemes)
## Warning: пакет 'ggthemes' был собран под R версии 4.3.3
# Задаем цвета для графиков
colors <- c("#CC1011", "#665555", "#05a399", "#cfcaca", "#f5e840", "#0683c9", "#e075b0")
# Читаем данные для каждого месяца отдельно
apr <- read.csv("C:/Users/Admin/Downloads/uber-raw-data-apr14.csv")
may <- read.csv("C:/Users/Admin/Downloads/uber-raw-data-may14.csv")
june <- read.csv("C:/Users/Admin/Downloads/uber-raw-data-jun14.csv")
july <- read.csv("C:/Users/Admin/Downloads/uber-raw-data-jul14.csv")
aug <- read.csv("C:/Users/Admin/Downloads/uber-raw-data-aug14.csv")
sept <- read.csv("C:/Users/Admin/Downloads/uber-raw-data-sep14.csv")
# Объединяем данные вместе
data <- rbind(apr, may, june, july, aug, sept)
# Переформатируем столбцы с датой и временем
data$Date.Time <- as.POSIXct(data$Date.Time, format="%m/%d/%Y %H:%M:%S")
data$Date.Time <- ymd_hms(data$Date.Time)
## Warning: 2211 failed to parse.
# Создаем отдельные столбцы для месяца, дня и года
data$day <- day(data$Date.Time)
data$month <- month(data$Date.Time, label=TRUE)
data$year <- year(data$Date.Time)
data$dayofweek <- wday(data$Date.Time, label=TRUE)
# Добавляем также столбцы времени
data$Time <- format(as.POSIXct(data$Date.Time, format = "%m/%d/%Y %H:%M:%S"), format="%H:%M:%S")
data$second <- second(hms(data$Time))
data$minute <- minute(hms(data$Time))
data$hour <- hour(hms(data$Time))
# Преобразуем столбец second в фактор
data$second <- factor(data$second)
# Агрегируем данные по часу
hourly_data <- data %>%
group_by(hour) %>%
summarize(Total = n())
# Выводим данные в таблице с поиском
datatable(hourly_data)
# Агрегируем данные по месяцу и часу
month_hour_data <- data %>%
group_by(month, hour) %>%
summarize(Total = n())
## `summarise()` has grouped output by 'month'. You can override using the
## `.groups` argument.
day_data <- data %>% group_by(day) %>% dplyr::summarize(Trips = n())
# Собираем данные по дню недели и месяцу
day_month_data <- data %>% group_by(dayofweek, month) %>% dplyr::summarize(Trips = n())
## `summarise()` has grouped output by 'dayofweek'. You can override using the
## `.groups` argument.
You can also embed plots, for example:
# Строим график количества поездок по часам
ggplot(hourly_data, aes(hour, Total)) +
geom_bar(stat="identity", fill="steelblue", color="red") +
ggtitle("Поездки каждый час", subtitle = "агрегированные данные за весь период") +
theme(legend.position = "none",
plot.title = element_text(hjust = 0.5),
plot.subtitle = element_text(hjust = 0.5)) +
scale_y_continuous(labels=comma)
## Warning: Removed 1 rows containing missing values (`position_stack()`).
# Строим график поездок по месяцам и часам
ggplot(month_hour_data, aes(hour, Total, fill=month)) +
geom_bar(stat = "identity") +
ggtitle("Поездки по часам и месяцам") +
scale_y_continuous(labels = comma)
## Warning: Removed 1 rows containing missing values (`position_stack()`).
# Строим график поездок по дням месяца
ggplot(day_data, aes(day, Trips)) +
geom_bar(stat = "identity", fill = "steelblue") +
ggtitle("Поездки по дням месяца") +
theme(legend.position = "none") +
scale_y_continuous(labels = comma)
## Warning: Removed 1 rows containing missing values (`position_stack()`).
# Строим график поездок по дню недели и месяцу
ggplot(day_month_data, aes(dayofweek, Trips, fill = month)) +
geom_bar(stat = "identity", aes(fill = month), position = "dodge") +
ggtitle("Поездки по дням недели и месяцам") +
scale_y_continuous(labels = comma) +
scale_fill_manual(values = colors)