library(readxl)
library(dplyr)
##
## 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(moments)
library(readxl)
data_sales <- read_excel("Tugas1-Data sales.xlsx")
head(data_sales)
## # A tibble: 6 × 7
## Kuarter `Orders 1` `Sales 1` `Orders 2` `Sales 2` `Orders 3` `Sales 3`
## <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 3 120 19610 27 3125 0 0
## 2 3 132 21573 28 2027 0 0
## 3 3 130 17917 34 2980 0 0
## 4 3 120 17572 30 3701 0 0
## 5 3 115 15154 37 2724 0 0
## 6 3 126 22795 40 5767 0 0
df_numeric <- data_sales %>% select(where(is.numeric))
skewness_result <- sapply(df_numeric, skewness, na.rm = TRUE)
skewness_result
## Kuarter Orders 1 Sales 1 Orders 2 Sales 2 Orders 3
## -0.007729945 0.271987576 0.667766729 -0.017832676 0.599585786 -1.116243156
## Sales 3
## 0.308731148
kurtosis_result <- sapply(df_numeric, kurtosis, na.rm = TRUE)
kurtosis_result
## Kuarter Orders 1 Sales 1 Orders 2 Sales 2 Orders 3 Sales 3
## 1.644118 9.693585 4.039958 3.620365 3.749784 3.918825 3.939221
missing_jumlah <- colSums(is.na(data_sales))
missing_persen <- colSums(is.na(data_sales)) / nrow(df) * 100
missing_jumlah
## Kuarter Orders 1 Sales 1 Orders 2 Sales 2 Orders 3 Sales 3
## 0 0 1 0 0 0 0
missing_persen
## numeric(0)
cek_outlier_iqr <- function(x) {
Q1 <- quantile(x, 0.25, na.rm = TRUE)
Q3 <- quantile(x, 0.75, na.rm = TRUE)
IQR_val <- IQR(x, na.rm = TRUE)
lower <- Q1 - 1.5 * IQR_val
upper <- Q3 + 1.5 * IQR_val
sum(x < lower | x > upper, na.rm = TRUE)
}
outlier_iqr <- sapply(df_numeric, cek_outlier_iqr)
outlier_iqr
## Kuarter Orders 1 Sales 1 Orders 2 Sales 2 Orders 3 Sales 3
## 0 11 6 4 5 29 9
cek_outlier_z <- function(x) {
z <- scale(x)
sum(abs(z) > 3, na.rm = TRUE)
}
outlier_z <- sapply(df_numeric, cek_outlier_z)
outlier_z
## Kuarter Orders 1 Sales 1 Orders 2 Sales 2 Orders 3 Sales 3
## 0 3 2 3 1 0 3