library(tidyverse)
library(dplyr)
library(reshape2)
library(ggforce)
library(readxl)
library(ggcorrplot)
datastudy <- read_excel("D:/AED/study performance.xlsx")
str(datastudy)
## tibble [1,000 Ă— 8] (S3: tbl_df/tbl/data.frame)
## $ gender : chr [1:1000] "female" "female" "female" "male" ...
## $ race_ethnicity : chr [1:1000] "group B" "group C" "group B" "group A" ...
## $ parental_level_of_education: chr [1:1000] "bachelor's degree" "some college" "master's degree" "associate's degree" ...
## $ lunch : chr [1:1000] "standard" "standard" "standard" "free/reduced" ...
## $ test_preparation_course : chr [1:1000] "none" "completed" "none" "none" ...
## $ math_score : num [1:1000] 72 69 90 47 76 71 88 40 64 38 ...
## $ reading_score : num [1:1000] 72 90 95 57 78 83 95 43 64 60 ...
## $ writing_score : num [1:1000] 74 88 93 44 75 78 92 39 67 50 ...
ggplot(datastudy, aes(x = math_score, y = reading_score, color = gender)) +
geom_point() +
labs(title = "Scatter Plot", x = "Math Score", y = "Reading Score") +
scale_color_manual(values = c("male" = "steelblue", "female" = "indianred")) +
theme_classic()
Scatterplot tersebut dikelompokkan berdasarkan gender, di mana warna merah menunjukkan gender female (perempuan), sedangkan warna biru menunjukkan gender male (laki-laki). Berdasarkan scatterplot di atas terlihat bahwa hubungan antara math score dengan reading score berhubungan positif. Hal ini menunjukkan apabila math scorenya naik maka reading scorenya juga akan naik, begitu pula sebaliknya. Math score dan reading score dari perempuan lebih tinggi dari laki-laki.
data <- read.csv("D:/visdat/Sleep_health_and_lifestyle_dataset.csv", header = TRUE, sep=";")
str(data)
## 'data.frame': 374 obs. of 13 variables:
## $ Person.ID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Gender : chr "Male" "Male" "Male" "Male" ...
## $ Age : int 27 28 28 28 28 28 29 29 29 29 ...
## $ Occupation : chr "Software Engineer" "Doctor" "Doctor" "Sales Representative" ...
## $ Sleep.Duration : num 6.1 6.2 6.2 5.9 5.9 5.9 6.3 7.8 7.8 7.8 ...
## $ Quality.of.Sleep : int 6 6 6 4 4 4 6 7 7 7 ...
## $ Physical.Activity.Level: int 42 60 60 30 30 30 40 75 75 75 ...
## $ Stress.Level : int 6 8 8 8 8 8 7 6 6 6 ...
## $ BMI.Category : chr "Overweight" "Normal" "Normal" "Obese" ...
## $ Blood.Pressure : chr "126/83" "125/80" "125/80" "140/90" ...
## $ Heart.Rate : int 77 75 75 85 85 85 82 70 70 70 ...
## $ Daily.Steps : int 4200 10000 10000 3000 3000 3000 3500 8000 8000 8000 ...
## $ Sleep.Disorder : chr "None" "None" "None" "Sleep Apnea" ...
data_numerik <- select_if(data, is.numeric) %>% select(-Person.ID)
str(data_numerik)
## 'data.frame': 374 obs. of 7 variables:
## $ Age : int 27 28 28 28 28 28 29 29 29 29 ...
## $ Sleep.Duration : num 6.1 6.2 6.2 5.9 5.9 5.9 6.3 7.8 7.8 7.8 ...
## $ Quality.of.Sleep : int 6 6 6 4 4 4 6 7 7 7 ...
## $ Physical.Activity.Level: int 42 60 60 30 30 30 40 75 75 75 ...
## $ Stress.Level : int 6 8 8 8 8 8 7 6 6 6 ...
## $ Heart.Rate : int 77 75 75 85 85 85 82 70 70 70 ...
## $ Daily.Steps : int 4200 10000 10000 3000 3000 3000 3500 8000 8000 8000 ...
data_melt <- cor(data_numerik[sapply(data_numerik,is.numeric)])
data_melt <- melt(data_melt)
ggplot(data_melt, aes(Var1, Var2, fill = value)) +
geom_tile(color = "white") +
scale_fill_gradient2(low = "darkblue", mid = "white", high = "maroon", midpoint = 0, limits = c(-1,1), name="Korelasi") +
labs(title = "Corellogram") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))
Berdasarkan matriks korelasi (Corellogram) di atas dapat dilihat bahwa semakin gelap warnanya maka korelasi antar peubah semakin kuat. Apabila warnanya semakin maroon maka korelasi antar peubah memiliki hubungan positif yang kuat, sedangkan semakin darkblue maka korelasi antar peubah memiliki hubungan negatif yang kuat. Peubah Sleep duration memiliki hubungan positif yang kuat dengan peubah Quality of Sleep. Sedangkan, peubah Quality of Sleep dan sleep duration memiliki hubungan negatif yang kuat dengan peubah stress level.
datasales <- read.csv("D:/visdat/sales.csv", header = TRUE, sep=",")
str(datasales)
## 'data.frame': 365 obs. of 3 variables:
## $ X : int 0 1 2 3 4 5 6 7 8 9 ...
## $ Date : chr "2021-10-01" "2021-10-02" "2021-10-03" "2021-10-04" ...
## $ Sales: num 29.1 30.7 30.3 27.4 22.8 ...
sales <- datasales[, c("Date", "Sales")]
str(sales)
## 'data.frame': 365 obs. of 2 variables:
## $ Date : chr "2021-10-01" "2021-10-02" "2021-10-03" "2021-10-04" ...
## $ Sales: num 29.1 30.7 30.3 27.4 22.8 ...
sales$Date <- as.Date(sales$Date)
monthly_sales <- aggregate(Sales ~ format(Date, "%Y-%m"), data = sales, FUN = sum)
names(monthly_sales) <- c("Date", "Sales")
monthly_sales$Date <- as.Date(paste(monthly_sales$Date, "01", sep = "-"))
data.ts <- ts(monthly_sales$Sales)
plot(data.ts, xlab ="Waktu", ylab = "Penjualan", col="firebrick", main = "Plot Data Penjualan")
points(data.ts)
Plot di atas merupakan plot dari data penjualan suatu produk setiap bulan dari Jumat, 1 Oktober 2021 sampai Jumat, 1 September 2022. Berdasarkan plot di atas dapat dilihat bahwa penjualan suatu produk mengalami peningkatan dari waktu ke waktu. Peningkatan ini dapat terjadi karena beberapa faktor, seperti harga produk, permintaan terhadap produk, dan juga ketersediaan produk.
dataworld <- map_data("world")
data2 <- read.csv("D:/visdat/World Happiness.csv", header = TRUE, sep=",")
data2 <- data2 %>% rename(region = Country.or.region)
data3 <- left_join(dataworld, data2, by = "region")
data3_vac <- data3 %>% filter(!is.na(Score))
str(data3_vac)
## 'data.frame': 77516 obs. of 14 variables:
## $ long : num 74.9 74.8 74.8 74.7 74.7 ...
## $ lat : num 37.2 37.2 37.2 37.3 37.3 ...
## $ group : num 2 2 2 2 2 2 2 2 2 2 ...
## $ order : int 12 13 14 15 16 17 18 19 20 21 ...
## $ region : chr "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
## $ subregion : chr NA NA NA NA ...
## $ Overall.rank : int 154 154 154 154 154 154 154 154 154 154 ...
## $ Score : num 3.2 3.2 3.2 3.2 3.2 ...
## $ GDP.per.capita : num 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 0.35 ...
## $ Social.support : num 0.517 0.517 0.517 0.517 0.517 0.517 0.517 0.517 0.517 0.517 ...
## $ Healthy.life.expectancy : num 0.361 0.361 0.361 0.361 0.361 0.361 0.361 0.361 0.361 0.361 ...
## $ Freedom.to.make.life.choices: num 0 0 0 0 0 0 0 0 0 0 ...
## $ Generosity : num 0.158 0.158 0.158 0.158 0.158 0.158 0.158 0.158 0.158 0.158 ...
## $ Perceptions.of.corruption : num 0.025 0.025 0.025 0.025 0.025 0.025 0.025 0.025 0.025 0.025 ...
top_country <- data3_vac %>%
arrange(desc(Score)) %>%
slice(1:10)
bottom_country <- data3_vac %>%
arrange(Score) %>%
slice(1:10)
ggplot(data3_vac, aes(x = long, y = lat, group = group)) +
geom_polygon(aes(fill = Score), color = "black") +
scale_fill_gradient(name = "Score", low = "lightsalmon", high = "darkred", na.value = "yellow") +
theme(axis.text.x = element_blank(),
axis.text.y = element_blank(),
axis.ticks = element_blank(),
axis.title.y = element_blank(),
axis.title.x = element_blank(),
rect = element_blank()) +
geom_text(data = rbind(top_country, bottom_country), aes(label = region), size = 3, color = "white")
Berdasarkan map chart di atas dapat dilihat bahwa semakin merah warna negaranya maka tingkat kebahagiaan negara tersebut semakin tinggi. Sedangkan semakin muda warnanya maka tingkat kebahagiaan negara tersebut semakin rendah. Tingkat kebahagiaan suatu negara dipengaruhi oleh banyak faktor, seperti GDP per capita, Social support, Healthy life expectancy,Freedom to make life choices, Generosity, Perceptions of corruption. Finlandia merupakan negara dengan tingkat kebahagiaan tertinggi di dunia. Sedangkan negara dengan tingkat kebahagiaan terendah adalah South Sudan.