Menaikkan Pencapaian Lead Time Pengiriman Armada
Dalam era bisnis yang kompetitif dan dinamis saat ini, efisiensi operasional dan kepuasan pelanggan adalah dua aspek kunci yang menjadi fokus utama bagi perusahaan logistik PT. Fastana Logistik Indonesia (FLI).Kecepatan dan ketepatan waktu pengiriman adalah faktor utama yang mempengaruhi kepuasan pelanggan dan daya saing perusahaan di pasar. Perusahaan logistik yang mampu memberikan layanan pengiriman yang cepat dan dapat diandalkan akan memiliki keunggulan kompetitif yang signifikan.
PT. Fastana Logistik Indonesia mengalami berbagai tantangan dan hambatan yang dapat menghambat pencapaian lead time pengiriman yang diinginkan dan informasi yang tidak akurat adalah beberapa contoh masalah yang mungkin dihadapi.Dalam rangka mengatasi tantangan-tantangan ini dan meningkatkan pencapaian lead time pengiriman armada, PT. Fastana Logistik Indonesia memandang penting untuk mengembangkan sebuah solusi yang efektif. Oleh karena itu, data ini bertujuan untuk mengusulkan pengembangan sebuah dashboard analisis history yang dapat membantu perusahaan dalam memonitor, menganalisis, dan mengambil tindakan berdasarkan data terkait lead time pengiriman armada.
Dashboard analisis history yang efektif dapat menjadi alat berharga dalam mengatasi tantangan operasional dalam industri logistik. Ini memungkinkan perusahaan untuk membuat keputusan yang lebih baik berdasarkan data historis yang akurat dan terkini.
library(ggplot2) # Untuk membuat plot statis
library(ggpubr) # melakukan eksport plot
library(scales) # melakukan edit di plot
library(glue) # menambah tooltip
library(plotly) # eksport plot statis menjadi interaktif##
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
##
## last_plot
## The following object is masked from 'package:stats':
##
## filter
## The following object is masked from 'package:graphics':
##
## layout
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
##
## 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
## Rows: 5,304
## Columns: 14
## $ Week <dbl> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ TANGGAL <dttm> 2023-01-02, 2023-01-02, 2023-01-02, 2023-01-03, 20…
## $ PROJECT <chr> "PT SANGHIANG PERKASA", "PT SANGHIANG PERKASA", "PT…
## $ NOPOL <chr> "B9254TEN", "B9181TEN", "B9220TEN", "B9166TEN", "B9…
## $ DRIVER <chr> "KOSMAS GEONG", "PUTRO", "ERI SAPUTRA", "ENDI K", "…
## $ `VENDOR OS DRIVER` <chr> "PT BSP", "PT IPI", "PT IPI", "PT BSP", "PT IPI", "…
## $ PHONE <chr> NA, NA, NA, NA, NA, NA, NA, NA, "0823-2209-7054", N…
## $ TYPE <chr> "WINGBOX", "WINGBOX", "WINGBOX", "WINGBOX", "WINGBO…
## $ SHIPMENT <chr> "KNS 22124170", "KNS 22124169", "8700027956", "TRS …
## $ FROM <chr> "PT SANGHIANG PERKASA", "PT SANGHIANG PERKASA", "PT…
## $ TO <chr> "PT SANGHIANG PERKASA - PT NETANIA KARUNIA PASURUAN…
## $ VENDOR <chr> "FLI", "FLI", "FLI", "FLI", "FLI", "FLI", "FLI", "F…
## $ Jarak <dbl> 750, 750, 135, 510, 750, 750, 750, 750, 840, 285, 7…
## $ `HIT/MISS` <chr> "MISS", "MISS", "MISS", "MISS", "MISS", "HIT", "MIS…
msm <- msm %>%
select(Week,TANGGAL,PROJECT,NOPOL,DRIVER,`VENDOR OS DRIVER`,TYPE,VENDOR,TO,Jarak,`HIT/MISS`) %>%
filter(PROJECT %in% c("PT FRISIAN FLAG INDONESIA","PT PROPAN RAYA ICC","PT SANGHIANG PERKASA","PT AMERTA INDAH OTSUKA","PT ICI PAINT INDONESIA"),
VENDOR %in% c("FLI"))
head(msm)msm_cleaning <- msm %>%
select(PROJECT,NOPOL,DRIVER,`VENDOR OS DRIVER`,TYPE,Jarak,TO,`HIT/MISS`) %>%
mutate(Project = as.character(PROJECT),
Nopol = as.character(NOPOL),
Driver = as.character(DRIVER),
Vendor = as.character(`VENDOR OS DRIVER`),
Type = as.character(TYPE),
Hasil = as.character(`HIT/MISS`),
Jarak = as.numeric(Jarak)) %>%
select(Project,Nopol,Driver,Vendor,Type,Jarak,TO,Hasil)
head(msm_cleaning)## Project Nopol Driver Vendor Type Jarak TO Hasil
## 0 0 0 0 0 0 0 0
top_project <- msm_cleaning %>%
filter(Hasil %in% "MISS") %>%
group_by(Project) %>%
summarise(Freq = n()) %>%
arrange(-Freq)
head(5)## [1] 5
plot_top_project <- ggplot(top_project,
aes(x = reorder(Project, Freq),
y = Freq,
text = label,
color = Freq)) +
geom_point(size = 6) +
geom_segment(aes(x = reorder(Project, Freq),
xend = reorder(Project, Freq),
y = 0,
yend = Freq), linewidth = 2) +
scale_color_gradient(low = "#8B0000",
high = "#00008B") +
coord_flip() +
labs(title = "Highest Occurrence Project On MISS",
x = NULL,
y = "Frequency") +
theme_minimal() +
theme(plot.title = element_text(hjust=0.5))
plot_top_projecttop_nopol <- msm_cleaning %>%
filter(Hasil %in% "MISS") %>%
group_by(Nopol) %>%
summarise(Freq = n()) %>%
arrange(-Freq) %>%
head(10)
top_nopolplot_top_nopol <- ggplot(top_nopol,
aes(x = reorder(Nopol, Freq),
y = Freq,
text = label,
color = Freq)) +
geom_point(size = 6) +
geom_segment(aes(x = reorder(Nopol, Freq),
xend = reorder(Nopol, Freq),
y = 0,
yend = Freq), linewidth = 2) +
scale_color_gradient(low = "#8B0000",
high = "#00008B") +
coord_flip() +
labs(title = "Highest Occurrence Nopol On MISS",
x = NULL,
y = "Frequency") +
theme_minimal() +
theme(plot.title = element_text(hjust=0.5))
plot_top_nopoltop_driver <- msm_cleaning %>%
filter(Hasil %in% "MISS") %>%
group_by(Driver) %>%
summarise(Freq = n()) %>%
arrange(-Freq) %>%
head(10)
top_driverplot_top_driver <- ggplot(top_driver,
aes(x = reorder(Driver, Freq),
y = Freq,
text = label,
color = Freq)) +
geom_point(size = 6) +
geom_segment(aes(x = reorder(Driver, Freq),
xend = reorder(Driver, Freq),
y = 0,
yend = Freq), linewidth = 2) +
scale_color_gradient(low = "#8B0000",
high = "#00008B") +
coord_flip() +
labs(title = "Highest Occurrence Driver On MISS",
x = NULL,
y = "Frequency") +
theme_minimal() +
theme(plot.title = element_text(hjust=0.5))
plot_top_drivertop_vendor <- msm_cleaning %>%
filter(Hasil %in% "MISS") %>%
group_by(Vendor) %>%
summarise(Freq = n()) %>%
arrange(-Freq) %>%
head()
top_vendorplot_top_vendor <- ggplot(data = top_vendor, aes(x = reorder(Vendor, Freq),
y = Freq,
text = label)) +
geom_col(aes(fill = Freq)) +
scale_fill_gradient(low = "#8B0000", high = "#00008B") +
labs(title = "Highest Occurrence Vendor On MISS",
x = "Frequency",
y = NULL) +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))
plot_top_vendortop_jarak <- msm_cleaning %>%
mutate(Jarak = as.character(Jarak)) %>%
filter(Project %in% "PT AMERTA INDAH OTSUKA",
Hasil %in% "MISS") %>%
group_by(Jarak) %>%
summarise(Freq = n()) %>%
arrange(-Freq) %>%
head()
top_jarakplot_top_jarak <- ggplot(top_jarak,
aes(x = reorder(Jarak, Freq),
y = Freq,
text = label,
color = Freq)) +
geom_point(size = 6) +
geom_segment(aes(x = reorder(Jarak, Freq),
xend = reorder(Jarak, Freq),
y = 0,
yend = Freq), linewidth = 2) +
scale_color_gradient(low = "#8B0000",
high = "#00008B") +
coord_flip() +
labs(title = "Highest Occurrence Jarak MISS On PT AMERTA INDAH OTSUKA",
x = NULL,
y = "Frequency") +
theme_minimal() +
theme(plot.title = element_text(hjust=0.5))
plot_top_jaraktop_tujuan <- msm_cleaning %>%
filter(Project %in% "PT AMERTA INDAH OTSUKA",
Hasil %in% "MISS") %>%
group_by(TO) %>%
summarise(Freq = n()) %>%
arrange(-Freq) %>%
head(10)
top_tujuantop_tujuan <- top_tujuan %>%
mutate(label = glue("{str_split(TO, '-')[[1]][2]}
Frequency: {Freq}"))
top_tujuanplot_top_tujuan <- ggplot(top_tujuan,
aes(x = reorder(TO, Freq),
y = Freq,
text = label,
color = Freq)) +
geom_point(size = 6) +
geom_segment(aes(x = reorder(TO, Freq),
xend = reorder(TO, Freq),
y = 0,
yend = Freq), linewidth = 2) +
scale_color_gradient(low = "#8B0000",
high = "#00008B") +
coord_flip() +
labs(title = "Highest Occurrence Jarak MISS On PT AMERTA INDAH OTSUKA",
x = NULL,
y = "Frequency") +
theme_minimal() +
theme(plot.title = element_text(hjust=0.5))
plot_top_tujuanmsm_hari <- msm %>%
select(TANGGAL,PROJECT,VENDOR,`HIT/MISS`) %>%
filter(PROJECT %in% c("PT FRISIAN FLAG INDONESIA","PT PROPAN RAYA ICC","PT SANGHIANG PERKASA","PT AMERTA INDAH OTSUKA","PT ICI PAINT INDONESIA"),
VENDOR %in% c("FLI")) %>%
mutate(
Weekday = factor(weekdays(TANGGAL), levels = c("Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"))) %>%
select(PROJECT, Weekday, `HIT/MISS`)
head(msm_hari)top_hari <- msm_hari %>%
filter(PROJECT %in% "PT AMERTA INDAH OTSUKA",
`HIT/MISS` %in% "MISS") %>%
group_by(Weekday) %>%
summarise(Freq = n()) %>%
arrange(-Freq) %>%
head()
top_hariplot_top_hari <- ggplot(top_hari,
aes(x = reorder(Weekday, Freq),
y = Freq,
text = label,
color = Freq)) +
geom_point(size = 6) +
geom_segment(aes(x = reorder(Weekday, Freq),
xend = reorder(Weekday, Freq),
y = 0,
yend = Freq), linewidth = 2) +
scale_color_gradient(low = "#8B0000",
high = "#00008B") +
coord_flip() +
labs(title = "Highest Occurrence Weekday MISS On PT AMERTA INDAH OTSUKA",
x = NULL,
y = "Frequency") +
theme_minimal() +
theme(plot.title = element_text(hjust=0.5))
plot_top_hari