library(ggplot2)
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(readxl)
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(scales)
library(tidyr)
df <- read_excel("C:/Users/Shera Dhafa/Downloads/car sales.xlsx")
# Konversi kolom Date
df$Date <- as.Date(df$Date)
# Tambah kolom bulan dan tahun
df$Month <- floor_date(df$Date, "month")
df$YearMonth <- format(df$Date, "%Y-%m")
df$Year <- format(df$Date, "%Y")
head(df)
## # A tibble: 6 × 19
## Car_id Date `Customer Name` Gender `Annual Income` Dealer_Name Company
## <chr> <date> <chr> <chr> <dbl> <chr> <chr>
## 1 C_CND_0… 2022-01-02 Geraldine Male 13500 Buddy Stor… Ford
## 2 C_CND_0… 2022-01-02 Gia Male 1480000 C & M Moto… Dodge
## 3 C_CND_0… 2022-01-02 Gianna Male 1035000 Capitol KIA Cadill…
## 4 C_CND_0… 2022-01-02 Giselle Male 13500 Chrysler o… Toyota
## 5 C_CND_0… 2022-01-02 Grace Male 1465000 Chrysler P… Acura
## 6 C_CND_0… 2022-01-02 Guadalupe Male 850000 Classic Ch… Mitsub…
## # ℹ 12 more variables: Model <chr>, Engine <chr>, Transmission <chr>,
## # Color <chr>, `Price ($)` <dbl>, Dealer_No <chr>, `Body Style` <chr>,
## # Phone <dbl>, Dealer_Region <chr>, Month <date>, YearMonth <chr>, Year <chr>
tren <- df %>%
group_by(Month, Year) %>%
summarise(Total_Unit = n(), .groups = "drop")
ggplot(tren, aes(x = Month, y = Total_Unit, color = Year)) +
geom_line(linewidth = 1.2) +
geom_point(size = 2) +
scale_x_date(date_labels = "%b %Y", date_breaks = "2 months") +
scale_y_continuous(labels = comma) +
labs(
title = "Tren Penjualan Mobil Bulanan (2022–2023)",
x = "Bulan",
y = "Jumlah Unit Terjual",
color = "Tahun"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
Interpretasi: Tren penjualan secara keseluruhan menunjukkan pola yang konsisten sepanjang tahun. Terdapat fluktuasi bulanan, dan beberapa bulan mengalami lonjakan.
region <- df %>%
group_by(Dealer_Region) %>%
summarise(
Total_Unit = n(),
Total_Revenue = sum(`Price ($)`, na.rm = TRUE)
) %>%
arrange(desc(Total_Unit))
ggplot(region, aes(x = reorder(Dealer_Region, Total_Unit), y = Total_Unit, fill = Dealer_Region)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = comma(Total_Unit)), hjust = -0.2, size = 3.5) +
coord_flip() +
scale_y_continuous(labels = comma, expand = expansion(mult = c(0, 0.15))) +
labs(
title = "Total Unit Terjual per Wilayah Dealer",
x = "Wilayah",
y = "Jumlah Unit"
) +
theme_minimal()
Interpretasi: Terdapat perbedaan volume penjualan yang signifikan antar wilayah dealer. Wilayah dengan penjualan tertinggi mengindikasikan pasar yang lebih besar atau juga disebabkan oleh pemasaran yang lebih bagus.
body <- df %>%
group_by(`Body Style`) %>%
summarise(Total = n()) %>%
mutate(Pct = round(Total / sum(Total) * 100, 1))
ggplot(body, aes(x = reorder(`Body Style`, Total), y = Total, fill = `Body Style`)) +
geom_col(show.legend = FALSE) +
geom_text(aes(label = paste0(Pct, "%")), hjust = -0.2, size = 4) +
coord_flip() +
scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
labs(
title = "Distribusi Penjualan Berdasarkan Body Style",
x = "Body Style",
y = "Jumlah Unit"
) +
theme_minimal()
Interpretasi: SUV dan Sedan mendominasi preferensi pembeli, mengindikasikan bahwa konsumen cenderung menyukai kedua fitur atau kenyamanan yang diberikan mobil tersebut
top_brand <- df %>%
group_by(Company) %>%
summarise(Total_Unit = n(), Avg_Price = mean(`Price ($)`, na.rm = TRUE)) %>%
arrange(desc(Total_Unit)) %>%
head(10)
ggplot(top_brand, aes(x = reorder(Company, Total_Unit), y = Total_Unit, fill = Avg_Price)) +
geom_col() +
geom_text(aes(label = comma(Total_Unit)), hjust = -0.2, size = 3.5) +
coord_flip() +
scale_fill_gradient(low = "#AED6F1", high = "#1A5276", labels = dollar) +
scale_y_continuous(expand = expansion(mult = c(0, 0.15))) +
labs(
title = "Top 10 Merek Mobil Terlaris",
x = "Merek",
y = "Jumlah Unit Terjual",
fill = "Rata-rata Harga ($)"
) +
theme_minimal()
Interpretasi: Chevrolet dan Ford secara konsisten mendominasi penjualan, sementara merek seperti Nissan dan Toyota berada di posisi bawah
trans_gender <- df %>%
group_by(Transmission, Gender) %>%
summarise(Total = n(), .groups = "drop")
ggplot(trans_gender, aes(x = Transmission, y = Total, fill = Gender)) +
geom_col(position = "dodge") +
geom_text(aes(label = comma(Total)), position = position_dodge(width = 0.9),
vjust = -0.5, size = 3.5) +
scale_y_continuous(labels = comma, expand = expansion(mult = c(0, 0.1))) +
labs(
title = "Perbandingan Preferensi Transmisi Berdasarkan Gender",
x = "Jenis Transmisi",
y = "Jumlah Pembeli",
fill = "Gender"
) +
theme_minimal()
Interpretasi: Mobil auto lebih banyak dipilih dibandingkan manual. Pola ini berlaku baik untuk pembeli laki-laki maupun perempuan, menandakan preferensi pasar yang kuat terhadap kemudahan berkendara.
ggplot(df, aes(x = `Body Style`, y = `Price ($)`, fill = `Body Style`)) +
geom_boxplot(show.legend = FALSE, outlier.alpha = 0.3) +
scale_y_continuous(labels = dollar) +
labs(
title = "Distribusi Harga Kendaraan per Body Style",
x = "Body Style",
y = "Harga ($)"
) +
theme_minimal()
Interpretasi: Hardtop dan SUV cenderung memiliki rentang harga yang lebih lebar dibandingkan Sedan, menandakan variasi yang lebih beragam pada segmen tersebut. Outlier pada beberapa kategori menandakan adanya model premium dengan harga jauh di atas rata-rata.