library(ggplot2)
library(readxl)
library(randomcoloR)
## Warning: package 'randomcoloR' was built under R version 4.4.3
library(dplyr)
## Warning: package 'dplyr' was built under R version 4.4.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
library(scales)
## Warning: package 'scales' was built under R version 4.4.3
Data diinput dari Microsoft Excel dengan syntax sebagai berikut:
setwd ("C:/Users/user/OneDrive/Documents")
data <- read_excel("Mobiles Dataset (2025).xlsx")
head (data)
## # A tibble: 6 × 15
## `Company Name` `Model Name` `Mobile Weight` RAM `Front Camera` `Back Camera`
## <chr> <chr> <chr> <chr> <chr> <chr>
## 1 Apple iPhone 16 1… 174g 6GB 12MP 48MP
## 2 Apple iPhone 16 2… 174g 6GB 12MP 48MP
## 3 Apple iPhone 16 5… 174g 6GB 12MP 48MP
## 4 Apple iPhone 16 P… 203g 6GB 12MP 48MP
## 5 Apple iPhone 16 P… 203g 6GB 12MP 48MP
## 6 Apple iPhone 16 P… 203g 6GB 12MP 48MP
## # ℹ 9 more variables: Processor <chr>, `Battery Capacity` <chr>,
## # `Screen Size` <chr>, `Launched Price (Pakistan)` <chr>,
## # `Launched Price (India)` <chr>, `Launched Price (China)` <chr>,
## # `Launched Price (USA)` <chr>, `Launched Price (Dubai)` <chr>,
## # `Launched Year` <dbl>
colnames(data) <- trimws(colnames(data))
brand_counts <- table(data$`Company Name`)
brand_df <- as.data.frame(brand_counts)
colnames(brand_df) <- c("Brand", "Count")
data$`Launched Price (USA)` <- as.numeric(gsub("[^0-9.]", "", data$`Launched Price (USA)`))
data$Price_USD <- as.numeric(gsub("[^0-9.]", "", data$`Launched Price (USA)`))
data$Price_USD[data$Price_USD == 0 | is.na(data$Price_USD)] <- median(data$Price_USD, na.rm = TRUE)
colnames(data) <- trimws(colnames(data))
data$`Launched Price (Dubai)` <- gsub("[^0-9.]", "", data$`Launched Price (Dubai)`)
data$`Launched Price (Dubai)` <- as.numeric(data$`Launched Price (Dubai)`)
data$`Launched Year` <- as.numeric(data$`Launched Year`)
Dari data tersebut akan di visualisasikan data dalam bentuk Pie Chart. Berikut terlampir hasil visualisasi datanya :
palette_colors <- distinctColorPalette(length(unique(brand_df$Brand)))
ggplot(brand_df, aes(x = "", y = Count, fill = Brand)) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
scale_fill_manual(values = palette_colors) +
theme_void() +
labs(title = "Distribusi Merek HP") +
geom_text(aes(label = percent(Count / sum(Count), accuracy = 0.1)),
position = position_stack(vjust = 0.5), size = 5)
Dari hasil visualisasi di atas tersebut dapat dijelaskan bahwa HP OPPO merupakan merek yang paling banyak distribusinya dalam dataset dengan persentase sebesar 13.9% sedangkan distribusi merek HP yang paling sedikit dalam dataset adalah Poco dengan persentase sebesar 0.2%.
Hasil visualisasi data di atas disajikan dalam bentuk Bar Chart sebagai berikut :
data <- data %>% rename(Merek = `Company Name`, RAM = RAM)
data$RAM <- gsub("[^0-9.]", "", data$RAM)
data$RAM <- as.numeric(data$RAM)
avg_ram <- data %>%
filter(!is.na(RAM)) %>%
group_by(Merek) %>%
summarise(RataRataRAM = mean(RAM, na.rm = TRUE)) %>%
arrange(desc(RataRataRAM))
ggplot(avg_ram, aes(x = reorder(Merek, RataRataRAM), y = RataRataRAM, fill = Merek)) +
geom_bar(stat = "identity", show.legend = FALSE) +
coord_flip() +
labs(title = "Rata-rata RAM per Merek", x = "Merek", y = "Rata-rata RAM (GB)") +
theme_minimal()
Berdasarkan Bar Plot visualisasi data rata-rata RAM berdasarkan merek HP dapat disimpulkan bahwa kategori HP dengan RAM terbanyak adalah Huawei yang mendekati 50GB. Kategori RAM merek HP Xiaomi, OnePlus, dan Oppo mengikuti rata-rata RAM sekitar 6-10 GB, sementara Nokia dan Apple memiliki RAM terendah, sekitar 2-4 GB.
Hasil visualisasi data di atas disajikan dalam bentuk Histogram sebagai berikut :
ggplot(data[data$Price_USD < 5000, ], aes(x = Price_USD)) +
geom_histogram(binwidth = 50, fill = "steelblue", color = "white") +
theme_minimal() +
labs(title = "Distribusi Harga HP (<$5000)", x = "Harga (USD)", y = "Frekuensi") +
theme(plot.title = element_text(hjust = 0.5))
Dari Histogram distribusi harga ponsel, dapat disimpulkan bahwa mayoritas ponsel dalam dataset berada dalam kategori harga terjangkau yakni di bawah $500. Frekuensi tertinggi dapat diperkirakan pada kisaran $100 hingga $300. Maka, dapat ditarik kesimpulan bahwa jumlah ponsel semakin berkurang seiring dengan meningkatnya harga,dapat dilihat dari visualisasi data bahwa sangat sedikit perangkat di atas $1000.
Hasil visualisasi data di atas disajikan dalam bentuk Density Plot sebagai berikut :
data_clean <- data %>% filter(!is.na(`Launched Price (Dubai)`) & `Launched Price (Dubai)` > 0)
if (nrow(data_clean) > 1) {
ggplot(data_clean, aes(x = `Launched Price (Dubai)`)) +
geom_density(fill = "blue", alpha = 0.5) +
labs(title = "Distribusi Harga Peluncuran di Dubai", x = "Harga Peluncuran (AED)", y = "Density") +
theme_minimal()
} else {
print("Tidak cukup data untuk membuat density plot.")
}
Dari Density Plot, menunjukkan bahwa sebagian besar harga peluncuran perangkat berada di kisaran 0 hingga 3000 AED dengan puncak kepadatan data tertinggi di rentang 100-200. Setelahnya, distribusi menurun secara bertahap dengan sedikit lonjakan di sekitar 4000-6000 AED. Harga di atas 6000 AED lebih jarang menandakan bahwa hanya sedikit perangkat yang dirilis dengan harga sangat tinggi.
Hasil visualisasi data di atas disajikan dalam bentuk Box Plot sebagai berikut :
data_clean_year <- data %>% filter(!is.na(`Launched Year`) & `Launched Year` > 0)
# Plot boxplot
if (nrow(data_clean_year) > 1) {
ggplot(data_clean_year, aes(y = `Launched Year`)) +
geom_boxplot(fill = "blue", alpha = 0.5) +
labs(title = "Box Plot Tahun Peluncuran", y = "Tahun Peluncuran") +
theme_minimal()
} else {
print("Tidak cukup data untuk membuat box plot.")
}
Dari visualisasi data Box Plot diatas menunjukkan bahwa mayoritas perangkat dirilis antara 2020 hingga 2024, dengan median sekitar 2022. Beberapa perangkat dirilis lebih awal, dengan outlier di bawah 2018.
mean(data$`Launched Price (USA)`)
## [1] 625.5158
Data di atas menunjukkan bahwa hasil dari perhitungan rata - rata harga ponsel dalam dataset Launched Price (USA) yaitu 625.5158.
median(data$`Launched Price (USA)`)
## [1] 449
Dari data perhitungan Median di atas menunjukkan nilai tengah yang telah diurutkan dari harga ponsel dalam dataset Launched Price (USA) yaitu 449 USD.
x <- data$`Launched Price (USA)`
modus <- function(x) {
uniqx <- unique(x)
uniqx[which.max(tabulate(match(x, uniqx)))]
}
modus(data$`Launched Price (USA)`)
## [1] 499
Dari data di atas menunjukkan nilai yang paling sering muncul dari harga ponsel dalam dataset Launched Price (USA) yaitu 449 USD.
quantile(data$`Launched Price (USA)`)
## 0% 25% 50% 75% 100%
## 79 250 449 849 39622
Dari data quartil di atas memberikan gambaran penyebaran harga ponsel dalam dataset Launched Price (USA): Q1 (Kuartil 1 / 25%): 25% ponsel memiliki harga di nilai 250 USD Q2 (Kuartil 2 / 50%): Separuh ponsel memiliki harga di nilai 445 USD Q3 (Kuartil 3 / 75%): 75% ponsel memiliki harga di nilai 849 USD
Q3 <- quantile(data$Price_USD, 0.75, na.rm = TRUE)
Q3
## 75%
## 849
Data menunjukkan bahwa sebesar 75% dari harga ponsel dalam Mobile Datasets 2025 ini berada dibawah 849 USD. Sisanya sebesar 25% harganya cenderung lebih tinggi dari angka ini. Dapat dikatakan bahwa mayoritas harga ponsel berada di bawah angka ini.
range_value <- max(data$Price_USD, na.rm = TRUE) - min(data$Price_USD, na.rm = TRUE)
range_value
## [1] 39543
Data menunjukkan bahwa Range atau Jangkauan dari Dataset ini memiliki perbedaan yang sangat besar antara harga ponsel termurah dan termahal. Selisihnya hampir menyentuh 40.000 USD.
std_dev <- sd(data$Price_USD, na.rm = TRUE)
std_dev
## [1] 1347.561
Data menunjukkan bahwa Standar Deviasi dari Dataset ini sebesar 1,347.56 USD, yang berarti rata - rata harga ponsel terdistribusi sekitar ±1,347.56 USD dari nilai rata - rata harga dalam USD.
variance <- var(data$Price_USD, na.rm = TRUE)
variance
## [1] 1815921
Varians berperan sebagai pengukur seberapa jauh angka - angka dalam data menyebar dari rata - rata. Dalam data ini varian yang dihasilkan cukup besar, yang artinya ada harga yang jauh lebih rendah atau lebih tinggi dibanding rata - rata, menyebabkan datanya menyebar luas.