# Загрузка необходимых пакетов
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.

Including Plots

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)