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