Selamat datang di LBB saya. Pada LBB Data visualization ini saya menggunakan dataset USVideos, yang menunjukkan video yang ada di Youtube yang pernah trending di Amerika Serikat. Pada LBB ini saya ingin melihat Kategori Video apa yang sering menjadi trending dan channel youtube apa yang sering trending dan apakah benar apabila views dapat menjadi pengaruh untuk sebuah video menjadi trending atau tidak.
Berikut adalah beberapa library yang digunakan untuk membuat project ini.
library(dplyr)
library(lubridate)
library(ggplot2)
library(tidyverse)
Langkah selanjutnya adalah meng-import data dan cek struktur data.
# Import data
video <- read.csv("data/USvideos.csv")
# Cek struktur data
glimpse(video)
## Rows: 13,400
## Columns: 12
## $ trending_date <chr> "17.14.11", "17.14.11", "17.14.11", "17.14.11",~
## $ title <chr> "WE WANT TO TALK ABOUT OUR MARRIAGE", "The Trum~
## $ channel_title <chr> "CaseyNeistat", "LastWeekTonight", "Rudy Mancus~
## $ category_id <int> 22, 24, 23, 24, 24, 28, 24, 28, 1, 25, 17, 24, ~
## $ publish_time <chr> "2017-11-13T17:13:01.000Z", "2017-11-13T07:30:0~
## $ views <int> 748374, 2418783, 3191434, 343168, 2095731, 1191~
## $ likes <int> 57527, 97185, 146033, 10172, 132235, 9763, 1599~
## $ dislikes <int> 2966, 6146, 5339, 666, 1989, 511, 2445, 778, 11~
## $ comment_count <int> 15954, 12703, 8181, 2146, 17518, 1434, 1970, 34~
## $ comments_disabled <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE~
## $ ratings_disabled <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE~
## $ video_error_or_removed <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE~
Pada data preprocessing ini, pertama-tama merubah tipe data trending_date dan publish_time menjadi tipe data yang tepat.
# Merubah `trending_date` menjadi tanggal
video$trending_date <- ydm(video$trending_date)
# Merubah `publish_time` menjadi tanggal
video$publish_time <- ymd_hms(video$publish_time,tz = "America/New_York")
str(video)
## 'data.frame': 13400 obs. of 12 variables:
## $ trending_date : Date, format: "2017-11-14" "2017-11-14" ...
## $ title : chr "WE WANT TO TALK ABOUT OUR MARRIAGE" "The Trump Presidency: Last Week Tonight with John Oliver (HBO)" "Racist Superman | Rudy Mancuso, King Bach & Lele Pons" "Nickelback Lyrics: Real or Fake?" ...
## $ channel_title : chr "CaseyNeistat" "LastWeekTonight" "Rudy Mancuso" "Good Mythical Morning" ...
## $ category_id : int 22 24 23 24 24 28 24 28 1 25 ...
## $ publish_time : POSIXct, format: "2017-11-13 12:13:01" "2017-11-13 02:30:00" ...
## $ views : int 748374 2418783 3191434 343168 2095731 119180 2103417 817732 826059 256426 ...
## $ likes : int 57527 97185 146033 10172 132235 9763 15993 23663 3543 12654 ...
## $ dislikes : int 2966 6146 5339 666 1989 511 2445 778 119 1363 ...
## $ comment_count : int 15954 12703 8181 2146 17518 1434 1970 3432 340 2368 ...
## $ comments_disabled : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ ratings_disabled : logi FALSE FALSE FALSE FALSE FALSE FALSE ...
## $ video_error_or_removed: logi FALSE FALSE FALSE FALSE FALSE FALSE ...
category_id dari angka menjadi nama kategori# Merubah `category_id` dari angka menjadi nama kategori
video$category_id <- sapply(X = as.character(video$category_id), FUN = switch,
"1" = "Film and Animation",
"2" = "Autos and Vehicles",
"10" = "Music",
"15" = "Pets and Animals",
"17" = "Sports",
"19" = "Travel and Events",
"20" = "Gaming",
"22" = "People and Blogs",
"23" = "Comedy",
"24" = "Entertainment",
"25" = "News and Politics",
"26" = "Howto and Style",
"27" = "Education",
"28" = "Science and Technology",
"29" = "Nonprofit and Activism",
"43" = "Shows")
video$category_id <- as.factor(video$category_id)
# Merubah kolom integer menjadi numeric
video[ , c("views", "likes", "dislikes", "comment_count")] <-
lapply(video[ , c("views", "likes", "dislikes", "comment_count")],
as.numeric )
Visualisasi yang akan di tampilkan adalah kategori video apa yang paling sering trending di Amerika. Sebelum melakukan visualisasi, lakukan agregasi untuk mencari category_id yang paling sering muncul dalam data trending.
video.unik <- video[match(unique(video$title), video$title) , ]
vid.cat <- video.unik %>% count(category_id) %>%
arrange(desc(n)) %>%
head(10)
Setelah melakukan agregasi, selanjutnya akan diplot menggunakan Bar Chart.
ggplot(vid.cat, aes(x = n, y = reorder(category_id, n))) +
geom_col(aes(fill = n), show.legend = F) +
scale_fill_gradient(low = "#300202",high = "#db0b0b") +
labs(title = "Kategori Video Paling Sering Trending di US",
x = "Trending Count",
y = "Category")
Insight: Dapat dilihat dari visualisasi diatas didapatkan bahwa kategori video yang paling sering trending di US adalah Entertainment.
Visualisasi yang akan ditampilkan adalah channel youtube yang paling sering trending di Amerika. Sebelum dilakukan visualisasi, akan dilakukan agregasi untuk melihat channel youtube apa yang paling sering trending di Amerika.
# Melihat channel title dengan jumlah trending paling sering
video.unik %>%
count(channel_title) %>%
arrange(desc(n)) %>%
head()
## channel_title n
## 1 Refinery29 31
## 2 The Tonight Show Starring Jimmy Fallon 30
## 3 Vox 29
## 4 TheEllenShow 28
## 5 Netflix 27
## 6 NFL 25
# Untuk menyeleksi channel Refinery29 diurutkan berdasarkan tanggal trending
top <- video.unik %>%
filter(channel_title == "Refinery29") %>%
arrange(trending_date)
Setelah melakukan agregasi, selanjutnya adalah membuat plotnya.
ggplot(top, aes(x = trending_date, y = views)) +
geom_line(aes(col = trending_date), show.legend = F) +
geom_point(aes(col = trending_date), show.legend = F) +
labs(
x = "Trending Date",
y = "Views"
)
Insight: Channel Refinery29 adalah channel yang paling sering trending dan memiliki jumlah views yang beragam (tidak selalu banyak).