data <- read.csv('/Users/radhityaharma/Downloads/datadetik.csv')
head(data)
## source
## 1 facebook / cpc
## 2 facebook / cpc
## 3 facebook / cpc
## 4 facebook / cpc
## 5 facebook / cpc
## 6 facebook / cpc
## title
## 1 Bikin Lambe Turah Diomelin, Nih Si Seksi yang Lengket-lengket sama Gading
## 2 Heboh! Kiki Farel Transfer Uang Jajan Rp 1 Juta ke Selebgram Mimi Peri
## 3 Tak Sesuai Harapan, Barang Belanja Online Ini Bikin Ngakak
## 4 Antar 'Tuyul', 7 Pengemudi Grab Dibekuk
## 5 Melihat Kantor Pelayanan Grab Driver Center
## 6 2 Pelajar di Yogya Lempar Batu ke Mobil hingga Tewaskan Pengemudinya
## cat us br pv pvps avg
## 1 Gosip 13736 19.269967 83593 6.042140 21.790189
## 2 Gosip 15909 62.303763 74032 4.612011 16.330553
## 3 Unik dan Viral 7748 30.934520 54657 6.949396 21.429338
## 4 Kriminal 43893 6.966219 47924 1.106560 5.056397
## 5 Informatif 41155 11.630219 44072 43.809145 180.944233
## 6 Kriminal 28334 82.671710 30570 1.080632 123.586301
str(data)
## 'data.frame': 155 obs. of 8 variables:
## $ source: chr "facebook / cpc" "facebook / cpc" "facebook / cpc" "facebook / cpc" ...
## $ title : chr "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" ...
## $ cat : chr "Gosip" "Gosip" "Unik dan Viral" "Kriminal" ...
## $ us : int 13736 15909 7748 43893 41155 28334 22885 5180 23208 21116 ...
## $ br : num 19.27 62.3 30.93 6.97 11.63 ...
## $ pv : int 83593 74032 54657 47924 44072 30570 24941 24097 23989 22642 ...
## $ pvps : num 6.04 4.61 6.95 1.11 43.81 ...
## $ avg : num 21.79 16.33 21.43 5.06 180.94 ...
colSums(is.na(data))
## source title cat us br pv pvps avg
## 0 0 0 0 0 0 0 0
Tidak terdapat nilai NA pada masing-masing peubah yang digunakan.
# Mengecek apakah ada duplikat
ada_duplikat <- anyDuplicated(data)
# Menampilkan hasil
print(ada_duplikat)
## [1] 0
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.2.3
##
## 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
# Menghapus duplikat
data_unique <- data %>% distinct()
head(data_unique)
## source
## 1 facebook / cpc
## 2 facebook / cpc
## 3 facebook / cpc
## 4 facebook / cpc
## 5 facebook / cpc
## 6 facebook / cpc
## title
## 1 Bikin Lambe Turah Diomelin, Nih Si Seksi yang Lengket-lengket sama Gading
## 2 Heboh! Kiki Farel Transfer Uang Jajan Rp 1 Juta ke Selebgram Mimi Peri
## 3 Tak Sesuai Harapan, Barang Belanja Online Ini Bikin Ngakak
## 4 Antar 'Tuyul', 7 Pengemudi Grab Dibekuk
## 5 Melihat Kantor Pelayanan Grab Driver Center
## 6 2 Pelajar di Yogya Lempar Batu ke Mobil hingga Tewaskan Pengemudinya
## cat us br pv pvps avg
## 1 Gosip 13736 19.269967 83593 6.042140 21.790189
## 2 Gosip 15909 62.303763 74032 4.612011 16.330553
## 3 Unik dan Viral 7748 30.934520 54657 6.949396 21.429338
## 4 Kriminal 43893 6.966219 47924 1.106560 5.056397
## 5 Informatif 41155 11.630219 44072 43.809145 180.944233
## 6 Kriminal 28334 82.671710 30570 1.080632 123.586301
Tidak terdapat nilai duplikat pada masing-masing peubah yang digunakan.
# Agregasi data untuk mendapatkan rata-rata bounce rate dan avg time on page per kategori
agg_data_br_avg <- data %>%
group_by(cat) %>%
summarise(avg_br = mean(br, na.rm = TRUE),
avg_time = mean(avg, na.rm = TRUE))
# Visualisasi scatter plot dalam hubungan antara br dan avg time on page
ggplot(agg_data_br_avg, aes(x = avg_br, y = avg_time, label = cat)) +
geom_point(color = "red") +
geom_text(vjust = -0.5) +
labs(title = "Hubungan antara Rasio Pentalan(BR) dan Waktu Rata-rata di Halaman(PVPS)",
x = "Rata-rata Bounce Rate", y = "Rata-rata PVPS")
### Analisis Minat dalam Durasi Bacaan
# SCATTERPLOT
ggplot(data, aes(x = cat, y = pvps, fill = cat)) +
geom_boxplot() +
labs(title = "Distribusi Tampilan Halaman per Sesi (PVPS) berdasarkan Kategori",
x = "Kategori", y = "Pageviews per Session") +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_fill_manual(values = c(
"Duka dan Peristiwa" = "#F28E82",
"Gosip" = "#D4AC42",
"Informatif" = "#7AC05B",
"Kontroversi dan Kebijakan" = "#52C8BE",
"Kriminal" = "#55C1FF",
"Olahraga" = "#A987FF",
"Unik dan Viral" = "#FF61D2"
)) +
coord_cartesian(ylim = c(0, max(data$pvps, na.rm = TRUE) / 2))
# Hitung korelasi antar metrik dalam setiap kategori
library(corrplot)
## corrplot 0.92 loaded
cor_data <- data %>%
select(us, br, pv, pvps, avg) %>%
cor(use = "complete.obs")
# Visualisasi heatmap
corrplot(cor_data, method = "color",
tl.col = "black", tl.srt = 45,
addCoef.col = "black")
### Analisis Strategi Konten Kedepannya
library(dplyr)
library(tidyr)
library(ggplot2)
library(tidytext)
## Warning: package 'tidytext' was built under R version 4.2.3
# Step 1: Hitung frekuensi kemunculan kata dalam judul artikel
title_words <- data %>%
unnest_tokens(word, title) %>%
filter(nchar(word) > 3) %>% # Hapus kata yang hanya terdiri dari 3 huruf atau kurang
count(word, sort = TRUE) %>%
top_n(10, n) # Ambil 10 kata teratas berdasarkan frekuensi
# Step 2: Hubungkan frekuensi kata dengan jumlah pengguna
word_user_data <- data %>%
unnest_tokens(word, title) %>%
filter(word %in% title_words$word) %>% # Filter hanya kata-kata yang termasuk dalam top 10
group_by(word) %>%
summarise(total_users = sum(us), freq = n())
# Step 3: Visualisasikan hasilnya
ggplot(word_user_data, aes(x = reorder(word, total_users), y = total_users)) +
geom_col(fill = "skyblue") +
coord_flip() +
labs(title = "10 Kata Teratas dalam Judul dan Total Penggunanya",
x = "Kata dalam Judul",
y = "Total Pengguna") +
theme_minimal()
`