library(readxl)
# Baca file Excel
data <- read_excel("C:/Users/ASUS/Downloads/Copy of Assignment Data Analyst MSIB Batch 7.xlsx")
# Tampilkan beberapa baris pertama dari dataset
head(data)
## # A tibble: 6 × 7
## `ga:sourceMedium` `ga:pageTitle` `ga:users` `ga:bounceRate` `ga:pageviews`
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 facebook / cpc Bikin Lambe Turah… 13736 19.3 83593
## 2 facebook / cpc Heboh! Kiki Farel… 15909 62.3 74032
## 3 facebook / cpc Tak Sesuai Harapa… 7748 30.9 54657
## 4 facebook / cpc Antar 'Tuyul', 7 … 43893 6.97 47924
## 5 facebook / cpc Melihat Kantor Pe… 41155 11.6 44072
## 6 facebook / cpc 2 Pelajar di Yogy… 28334 82.7 30570
## # ℹ 2 more variables: `ga:pageviewsPerSession` <dbl>, `ga:avgTimeOnPage` <dbl>
# Lihat struktur data
str(data)
## tibble [156 × 7] (S3: tbl_df/tbl/data.frame)
## $ ga:sourceMedium : chr [1:156] "facebook / cpc" "facebook / cpc" "facebook / cpc" "facebook / cpc" ...
## $ ga:pageTitle : chr [1:156] "Bikin Lambe Turah Diomelin, Nih Si Seksi yang Lengket-lengket sama Gading" "Heboh! Kiki Farel Transfer Uang Jajan Rp 1 Juta ke Selebgram Mimi Peri" "Tak Sesuai Harapan, Barang Belanja Online Ini Bikin Ngakak" "Antar 'Tuyul', 7 Pengemudi Grab Dibekuk" ...
## $ ga:users : num [1:156] 13736 15909 7748 43893 41155 ...
## $ ga:bounceRate : num [1:156] 19.27 62.3 30.93 6.97 11.63 ...
## $ ga:pageviews : num [1:156] 83593 74032 54657 47924 44072 ...
## $ ga:pageviewsPerSession: num [1:156] 6.04 4.61 6.95 1.11 43.81 ...
## $ ga:avgTimeOnPage : num [1:156] 21.79 16.33 21.43 5.06 180.94 ...
# Ringkasan deskriptif dari data
summary(data)
## ga:sourceMedium ga:pageTitle ga:users ga:bounceRate
## Length:156 Length:156 Min. : 9 Min. : 0.00
## Class :character Class :character 1st Qu.: 108 1st Qu.: 0.00
## Mode :character Mode :character Median : 233 Median : 17.07
## Mean : 1996 Mean : 31.93
## 3rd Qu.: 458 3rd Qu.: 62.40
## Max. :43893 Max. :100.00
## NA's :1 NA's :1
## ga:pageviews ga:pageviewsPerSession ga:avgTimeOnPage
## Min. : 215 Min. : 0.000 Min. : 2.815
## 1st Qu.: 287 1st Qu.: 0.000 1st Qu.: 16.948
## Median : 431 Median : 2.354 Median : 44.721
## Mean : 3607 Mean : 16.204 Mean : 75.428
## 3rd Qu.: 826 3rd Qu.: 22.194 3rd Qu.:109.393
## Max. :83593 Max. :268.833 Max. :449.897
## NA's :1 NA's :1 NA's :1
Dari data tersebut, bisa diperoleh beberapa poin, yaitu : 1. Kunjungan pengguna banyak bersumber dari iklan Facebook yang berbayar. Hal tersebut menandakan bahwa Faceboook cenderung efektif dalam menarik pengunjung halaman jika dilihat secara keseluruhan. 2. Halaman dengan judul “Melihat Kantor layanan Grab Driver Center” memiliki rata-rata waktu tertinggi keterlibatan pengunjung halaman tersebut dan sesi per halamannya. Hal itu menunjukkan bahwa minat dari pengguna terhadap isi halaman tersebut sangat kuat. 3. Halaman dengan judul “Antar ‘Tuyul’, 7 Pengemudi Grab Dibekuk”, memiliki tingkat bounce rate yang sangat rendah (7%). Hal ini menunjukkan bahwa pengguna tidak hanya meninggalkan halaman tersebut segera setelah masuk, tetapi kemungkinan besar terlibat dengan konten sehingga menjelajahi lebih banyak halaman di situs.
# Mengambil kolom yang hanya bertipe numerik
data_num <- data[, sapply(data, is.numeric)]
# Menampilkan data frame yang hanya berisi kolom numerik
print(data_num)
## # A tibble: 156 × 5
## `ga:users` `ga:bounceRate` `ga:pageviews` `ga:pageviewsPerSession`
## <dbl> <dbl> <dbl> <dbl>
## 1 13736 19.3 83593 6.04
## 2 15909 62.3 74032 4.61
## 3 7748 30.9 54657 6.95
## 4 43893 6.97 47924 1.11
## 5 41155 11.6 44072 43.8
## 6 28334 82.7 30570 1.08
## 7 22885 81.6 24941 1.09
## 8 5180 12.7 24097 4.74
## 9 23208 95.4 23989 1.04
## 10 21116 88.1 22642 1.08
## # ℹ 146 more rows
## # ℹ 1 more variable: `ga:avgTimeOnPage` <dbl>
par(mfrow = c(1, 5))
# Membuat boxplot
boxplot(data_num$`ga:users`, main = "Boxplot Users", ylab = "Nilai", col = "red")
boxplot(data_num$`ga:bounceRate`, main = "Boxplot Bounce Rate", ylab = "Nilai", col = "lightgreen")
boxplot(data_num$`ga:pageviews`, main = "Boxplot Page Views", ylab = "Nilai", col = "yellow")
boxplot(data_num$`ga:pageviewsPerSession`, main = "Boxplot Page Avg Views per Session", ylab = "Nilai", col = "orange")
boxplot(data_num$`ga:avgTimeOnPage`, main = "Boxplot Avg Time on Page", ylab = "Nilai", col = "lightblue")
Dari visualisasi diatas, terlihat bahwa sebaran nilai pengguna, jumlah
banyaknya halaman dilihat, dan rata-rata sesi pengunjung halaman
mempunyai sebaran nilai yang lumayan besar, sehingga terlihat banyak
pencilan pada boxplotnya. Selain itu, sebaran nilai bounce rate berkisar
antara 0 hingga 100 dan rata-rata waktu yang dihabiskan dalam halaman
tersebut berkisar antara 0 hingga nilai sekitar 200.
# Menghapus nilai NA
data_num.1 <- na.omit(data_num)
df <- as.data.frame(data_num.1)
# Memuat paket corrplot
library(corrplot)
## corrplot 0.92 loaded
# Menghitung matriks korelasi
cor_matrix <- cor(df)
# Membuat heatmap menggunakan corrplot
corrplot(cor_matrix, method = "color",
col = colorRampPalette(c("blue", "white", "red"))(200),
addCoef.col = "black", # Menambahkan nilai korelasi
tl.col = "black", tl.srt = 45, # Rotasi label sumbu
title = "Heatmap Matriks Korelasi")
Dari visualisasi korelasi diatas, terlihat bahwa hubungan terkuat berada
diantara jumlah pengunjung dengan jumlah banyaknya halaman tersebut
dibuka. Hal itu tentu saja selaras karena semakin sering halaman dibuka
maka berarti jumlah pengguna yang membuka halaman tersebut semakin
banyak. Disamping itu, lamanya sesi dalam melihat suatu halaman tidak
mempunyai hubungan yang besar terhadap variabel lainnya.
# Data
High <- sum(data_num.1$`ga:bounceRate` > 50)
Low <- sum(data_num.1$`ga:bounceRate` <= 50)
proporsi <- c(High, Low)
labels <- c("High Bounce Rate", "Low Bounce Rate")
# Menghitung persentase
persentase <- round(proporsi / sum(proporsi) * 100, 1)
labels <- paste(labels, persentase, "%", sep = " ")
# Membuat pie chart
colors <- c('yellow', 'orange')
pie(proporsi, labels = labels, main = "Identify pages with high or low bounce rates", col = colors)
Dari pie chart diatas, terlihat bahwa judul artikel yang termasuk dalam
data yang dianalisis lebih banyak yang memiliki tingkat bounce rate yang
rendah. Hal itu berarti sebagian besar pengunjung merasa bahwa sudah
banyak halaman yang memenuhi kebutuhan pengunjung dalam mencari
informasi atau berita terbaru.