data_customer <- read.csv("data_customer.csv")
str(data_customer)
## 'data.frame': 52 obs. of 5 variables:
## $ ID_Pelanggan : chr "ID00031" "ID00079" "ID00051" "ID00014" ...
## $ Jenis_Kelamin : chr "Laki-laki" "Perempuan" "Perempuan" "Laki-laki" ...
## $ Tempat_Tinggal: chr "Desa" "Kota" "Kota" "Kota" ...
## $ Penghasilan : int 2227350 9047608 9735540 13510126 7773498 6666740 5658721 7637656 6776730 10412102 ...
## $ Total_Belanja : int 2563031 8369550 8053033 799876 6982081 4782002 4286283 4779797 6315967 5106141 ...
model1 <- lm(Total_Belanja ~ Penghasilan, data = data_customer)
summary(model1)
##
## Call:
## lm(formula = Total_Belanja ~ Penghasilan, data = data_customer)
##
## Residuals:
## Min 1Q Median 3Q Max
## -8082776 -1026709 193801 952258 3116596
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.759e+06 1.041e+06 2.650 0.011225 *
## Penghasilan 4.533e-01 1.183e-01 3.833 0.000408 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1915000 on 43 degrees of freedom
## (7 observations deleted due to missingness)
## Multiple R-squared: 0.2546, Adjusted R-squared: 0.2373
## F-statistic: 14.69 on 1 and 43 DF, p-value: 0.000408
data_customer <- read.csv("data_customer.csv", header = TRUE)
head(data_customer)
## ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## 1 ID00031 Laki-laki Desa 2227350 2563031
## 2 ID00079 Perempuan Kota 9047608 8369550
## 3 ID00051 Perempuan Kota 9735540 8053033
## 4 ID00014 Laki-laki Kota 13510126 799876
## 5 ID00067 Perempuan Desa 7773498 6982081
## 6 ID00042 Laki-laki Desa 6666740 4782002
str(data_customer)
## 'data.frame': 52 obs. of 5 variables:
## $ ID_Pelanggan : chr "ID00031" "ID00079" "ID00051" "ID00014" ...
## $ Jenis_Kelamin : chr "Laki-laki" "Perempuan" "Perempuan" "Laki-laki" ...
## $ Tempat_Tinggal: chr "Desa" "Kota" "Kota" "Kota" ...
## $ Penghasilan : int 2227350 9047608 9735540 13510126 7773498 6666740 5658721 7637656 6776730 10412102 ...
## $ Total_Belanja : int 2563031 8369550 8053033 799876 6982081 4782002 4286283 4779797 6315967 5106141 ...
colSums(is.na(data_customer))
## ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## 0 0 0 2 6
data_no_na <- na.omit(data_customer)
# Pastikan numeric
data_customer$Penghasilan <- as.numeric(as.character(data_customer$Penghasilan))
data_customer$Total_Belanja <- as.numeric(as.character(data_customer$Total_Belanja))
# Isi NA dengan mean
data_customer$Penghasilan[is.na(data_customer$Penghasilan)] <-
mean(data_customer$Penghasilan, na.rm = TRUE)
data_customer$Total_Belanja[is.na(data_customer$Total_Belanja)] <-
mean(data_customer$Total_Belanja, na.rm = TRUE)
duplicated(data_customer)
## [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [13] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [25] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [37] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
## [49] FALSE FALSE FALSE FALSE
data_unique <- data_customer[!duplicated(data_customer), ]
boxplot(data_customer$Penghasilan)
Q1 <- quantile(data_customer$Penghasilan, 0.25, na.rm = TRUE)
Q3 <- quantile(data_customer$Penghasilan, 0.75, na.rm = TRUE)
IQR_value <- IQR(data_customer$Penghasilan, na.rm = TRUE)
data_no_outlier <- subset(
data_customer,
Penghasilan > (Q1 - 1.5 * IQR_value) &
Penghasilan < (Q3 + 1.5 * IQR_value)
)
Q1 <- quantile(data_customer$Penghasilan, 0.25, na.rm = TRUE)
Q3 <- quantile(data_customer$Penghasilan, 0.75, na.rm = TRUE)
IQR <- Q3 - Q1
data_no_outlier <- subset(
data_customer,
Penghasilan > (Q1 - 1.5*IQR) &
Penghasilan < (Q3 + 1.5*IQR)
)
data_customer$Penghasilan <- as.numeric(as.character(data_customer$Penghasilan))
data_customer$Penghasilan <- as.numeric(data_customer$Penghasilan)
data_customer$Penghasilan <- gsub("[^0-9]", "", data_customer$Penghasilan)
data_customer$Penghasilan <- as.numeric(data_customer$Penghasilan)
# Pastikan numeric
data_customer$Penghasilan <- as.numeric(as.character(data_customer$Penghasilan))
# Hitung IQR
Q1 <- quantile(data_customer$Penghasilan, 0.25, na.rm = TRUE)
Q3 <- quantile(data_customer$Penghasilan, 0.75, na.rm = TRUE)
IQR_value <- IQR(data_customer$Penghasilan, na.rm = TRUE)
# Filter outlier
data_no_outlier <- subset(
data_customer,
Penghasilan > (Q1 - 1.5 * IQR_value) &
Penghasilan < (Q3 + 1.5 * IQR_value)
)
unique(data_customer$Jenis_Kelamin)
## [1] "Laki-laki" "Perempuan"
data_customer$Jenis_Kelamin <- tolower(data_customer$Jenis_Kelamin)
unique(data_customer$Tempat_Tinggal)
## [1] "Desa" "Kota"
data_customer$Tempat_Tinggal <- tolower(data_customer$Tempat_Tinggal)
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
data_customer$Jenis_Kelamin <- as.factor(data_customer$Jenis_Kelamin)
data_customer$Tempat_Tinggal <- as.factor(data_customer$Tempat_Tinggal)
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.
model2 <- lm(Total_Belanja ~ Penghasilan + Jenis_Kelamin + Tempat_Tinggal,
data = data_customer)
summary(model2)
##
## Call:
## lm(formula = Total_Belanja ~ Penghasilan + Jenis_Kelamin + Tempat_Tinggal,
## data = data_customer)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5266323 -1256501 49306 876382 3417423
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.959e+06 5.081e+05 7.791 4.56e-10 ***
## Penghasilan -6.090e-04 1.429e-03 -0.426 0.671785
## Jenis_Kelaminperempuan 1.762e+06 4.906e+05 3.592 0.000771 ***
## Tempat_Tinggalkota 2.116e+06 4.912e+05 4.307 8.14e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1612000 on 48 degrees of freedom
## Multiple R-squared: 0.4218, Adjusted R-squared: 0.3857
## F-statistic: 11.67 on 3 and 48 DF, p-value: 7.299e-06
model2 <- lm(Total_Belanja ~ Penghasilan + Jenis_Kelamin + Tempat_Tinggal,
data = data_customer)
summary(model2)
##
## Call:
## lm(formula = Total_Belanja ~ Penghasilan + Jenis_Kelamin + Tempat_Tinggal,
## data = data_customer)
##
## Residuals:
## Min 1Q Median 3Q Max
## -5266323 -1256501 49306 876382 3417423
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 3.959e+06 5.081e+05 7.791 4.56e-10 ***
## Penghasilan -6.090e-04 1.429e-03 -0.426 0.671785
## Jenis_Kelaminperempuan 1.762e+06 4.906e+05 3.592 0.000771 ***
## Tempat_Tinggalkota 2.116e+06 4.912e+05 4.307 8.14e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 1612000 on 48 degrees of freedom
## Multiple R-squared: 0.4218, Adjusted R-squared: 0.3857
## F-statistic: 11.67 on 3 and 48 DF, p-value: 7.299e-06
colSums(is.na(data_customer))
## ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## 0 0 0 0 0
sum(is.na(data_customer))
## [1] 0
data_no_na <- na.omit(data_customer)
data_customer$Penghasilan[is.na(data_customer$Penghasilan)] <-
mean(data_customer$Penghasilan, na.rm = TRUE)
# Cek apakah ada duplikat
sum(duplicated(data_customer))
## [1] 0
# Melihat data yang duplikat
data_customer[duplicated(data_customer), ]
## [1] ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## <0 rows> (or 0-length row.names)
data_no_duplicate <- data_customer[!duplicated(data_customer), ]
Q1 <- quantile(data_customer$Penghasilan, 0.25, na.rm = TRUE)
Q3 <- quantile(data_customer$Penghasilan, 0.75, na.rm = TRUE)
IQR_value <- IQR(data_customer$Penghasilan, na.rm = TRUE)
lower_bound <- Q1 - 1.5 * IQR_value
upper_bound <- Q3 + 1.5 * IQR_value
# Menampilkan outlier
outlier <- subset(data_customer,
Penghasilan < lower_bound |
Penghasilan > upper_bound)
outlier
## ID_Pelanggan Jenis_Kelamin Tempat_Tinggal Penghasilan Total_Belanja
## 31 ID00015 laki-laki kota 866222554 6550218
## 41 ID00007 laki-laki kota 866222554 4498392
data_no_outlier <- subset(data_customer,
Penghasilan >= lower_bound &
Penghasilan <= upper_bound)
# Ubah jadi huruf kecil semua
data_customer$Jenis_Kelamin <- tolower(data_customer$Jenis_Kelamin)
# Hapus spasi
data_customer$Jenis_Kelamin <- trimws(data_customer$Jenis_Kelamin)
# Standarisasi
data_customer$Jenis_Kelamin[data_customer$Jenis_Kelamin %in% c("l", "laki", "laki-laki")] <- "laki-laki"
data_customer$Jenis_Kelamin[data_customer$Jenis_Kelamin %in% c("p", "perempuan")] <- "perempuan"
plot(data_customer$Penghasilan, data_customer$Total_Belanja,
main = "Penghasilan vs Total Belanja",
xlab = "Penghasilan",
ylab = "Total Belanja",
pch = 19,
col = "blue")
abline(model1, col = "red", lwd = 2)
mean(data_customer$Penghasilan, na.rm = TRUE)
## [1] 41645315
median(data_customer$Penghasilan, na.rm = TRUE)
## [1] 9040295
modus <- function(x) {
uniqx <- unique(x)
uniqx[which.max(tabulate(match(x, uniqx)))]
}
modus(data_customer$Penghasilan)
## [1] 866222554
mean(data_customer$Total_Belanja, na.rm = TRUE)
## [1] 6550218
median(data_customer$Total_Belanja, na.rm = TRUE)
## [1] 6550218
modus(data_customer$Total_Belanja)
## [1] 6550218
hist(data_customer$Penghasilan,
main = "Histogram Penghasilan Customer",
xlab = "Penghasilan",
col = "skyblue")
plot(data_customer$Penghasilan,
main = "Plot Penghasilan Customer",
ylab = "Penghasilan",
col = "blue",
pch = 19)
boxplot(data_customer$Penghasilan,
main = "Boxplot Penghasilan Customer",
col = "orange")
hist(data_customer$Total_Belanja,
main = "Histogram Total Belanja",
xlab = "Total Belanja",
col = "lightgreen")
boxplot(data_customer$Total_Belanja,
main = "Boxplot Total Belanja",
col = "pink")