#  Tải dữ liệu
library("csv")
## Warning: package 'csv' was built under R version 4.4.3
data <- read.csv("C:/Users/Admin/Downloads/Supermarket Transactions.csv", header = T)
head(data)
##   X PurchaseDate CustomerID Gender MaritalStatus Homeowner Children
## 1 1   2007-12-18       7223      F             S         Y        2
## 2 2   2007-12-20       7841      M             M         Y        5
## 3 3   2007-12-21       8374      F             M         N        2
## 4 4   2007-12-21       9619      M             M         Y        3
## 5 5   2007-12-22       1900      F             S         Y        3
## 6 6   2007-12-22       6696      F             M         Y        3
##    AnnualIncome          City StateorProvince Country ProductFamily
## 1   $30K - $50K   Los Angeles              CA     USA          Food
## 2   $70K - $90K   Los Angeles              CA     USA          Food
## 3   $50K - $70K     Bremerton              WA     USA          Food
## 4   $30K - $50K      Portland              OR     USA          Food
## 5 $130K - $150K Beverly Hills              CA     USA         Drink
## 6   $10K - $30K Beverly Hills              CA     USA          Food
##   ProductDepartment      ProductCategory UnitsSold Revenue
## 1       Snack Foods          Snack Foods         5   27.38
## 2           Produce           Vegetables         5   14.90
## 3       Snack Foods          Snack Foods         3    5.52
## 4            Snacks                Candy         4    4.44
## 5         Beverages Carbonated Beverages         4   14.00
## 6              Deli          Side Dishes         3    4.37
dataDT <- c("Gender", "MaritalStatus", "Homeowner", "AnnualIncome", 
            "City", "StateorProvince", "Country", 
            "ProductFamily", "ProductDepartment", "ProductCategory")
dataDT <- data[,dataDT] 

Biến Gender

Lập bảng tần số và tần suất

#Bảng tần số
table(dataDT$Gender)
## 
##    F    M 
## 7170 6889
#Bảng tần suất
table(dataDT$Gender)/sum(table(dataDT$Gender))
## 
##         F         M 
## 0.5099936 0.4900064

Nhận xét:

Vậy trong bộ dữ liệu có 7170 là nữ và 6889 là nam.

Có nghĩa là bộ dữ liệu có 50.9993598% là nữ và 49.0006402% là nam.

Vẽ đồ thị

library(ggplot2)
## Warning: package 'ggplot2' 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
# Tạo bảng tần số
freq1 <- table(dataDT$Gender)

# Chuyển thành data frame
Gender <- as.data.frame(freq1)
colnames(Gender) <- c("Gender", "Count")

# Vẽ biểu đồ cột
ggplot(Gender, aes(x = Gender, y = Count)) +
  geom_col(fill = "#F08080", color = "black") +
  geom_text(aes(label = Count), vjust = -0.5, color = "black") 

# Bảng tần số
freq <- table(dataDT$Gender)

# Vẽ biểu đồ tròn
pie(freq,
    labels = paste0(names(freq), " (", round(100 * freq / sum(freq), 1), "%)"),
    col = c("#89CFF0", "#F4A460"),  # màu tùy chọn
    main = "Gender")

Biến MaritalStatus

Lập bảng tần số và tần suất

#Bảng tần số
table(dataDT$MaritalStatus)
## 
##    M    S 
## 6866 7193
#Bảng tần suất
table(dataDT$MaritalStatus)/sum(table(dataDT$MaritalStatus))
## 
##         M         S 
## 0.4883704 0.5116296

Nhận xét:

Vậy trong bộ dữ liệu có 6866 là người đã có gia đình và 7193 là người chưa có gia đình.

Có nghĩa là bộ dữ liệu có 48.8370439% là người đã có gia đình và 51.1629561% là là người chưa có gia đình.

Vẽ đồ thị

# Tạo bảng tần số
freq2 <- table(dataDT$MaritalStatus)

# Chuyển thành data frame
MaritalStatus <- as.data.frame(freq2)
colnames(MaritalStatus) <- c("MaritalStatus", "Count")

# Vẽ biểu đồ cột
ggplot(MaritalStatus, aes(x = MaritalStatus, y = Count)) +
  geom_col(fill = "#F08080", color = "black") +
  geom_text(aes(label = Count), vjust = -0.5, color = "black") 

# Bảng tần số
freq2 <- table(dataDT$MaritalStatus)

# Vẽ biểu đồ tròn
pie(freq2,
    labels = paste0(names(freq2), " (", round(100 * freq2 / sum(freq2), 1), "%)"),
    col = c("#89CFF0", "#F4A460"),  # màu tùy chọn
    main = "MaritalStatus")

Biến Homeowner

Lập bảng tần số và tần suất

#Bảng tần số
table(dataDT$Homeowner)
## 
##    N    Y 
## 5615 8444
#Bảng tần suất
table(dataDT$Homeowner)/sum(table(dataDT$Homeowner))
## 
##         N         Y 
## 0.3993883 0.6006117

Nhận xét:

Vậy trong bộ dữ liệu có 5615 là người chưa có nhà và 8444 là người đã có nhà.

Có nghĩa là bộ dữ liệu có 39.9388292% là người chưa có nhà và 60.0611708% là là người đã có nhà.

Vẽ đồ thị

# Tạo bảng tần số
freq3 <- table(dataDT$Homeowner)

# Chuyển thành data frame
homeowner <- as.data.frame(freq3)
colnames(homeowner) <- c("Homeowner", "Count")

# Vẽ biểu đồ cột
ggplot(homeowner, aes(x = Homeowner, y = Count)) +
  geom_col(fill = "#F08080", color = "black") +
  geom_text(aes(label = Count), vjust = -0.5, color = "black") 

# Bảng tần số
freq3 <- table(dataDT$Homeowner)

# Vẽ biểu đồ tròn
pie(freq3,
    labels = paste0(names(freq3), " (", round(100 * freq3 / sum(freq3), 1), "%)"),
    col = c("#89CFF0", "#F4A460"),  # màu tùy chọn
    main = "Homeowner")

Biến AnnualIncome

Lập bảng tần số và tần suất

#Bảng tần số
table(dataDT$AnnualIncome)
## 
##   $10K - $30K $110K - $130K $130K - $150K       $150K +   $30K - $50K 
##          3090           643           760           273          4601 
##   $50K - $70K   $70K - $90K  $90K - $110K 
##          2370          1709           613
#Bảng tần suất
table(dataDT$AnnualIncome)/sum(table(dataDT$AnnualIncome))
## 
##   $10K - $30K $110K - $130K $130K - $150K       $150K +   $30K - $50K 
##    0.21978804    0.04573583    0.05405790    0.01941817    0.32726367 
##   $50K - $70K   $70K - $90K  $90K - $110K 
##    0.16857529    0.12155914    0.04360196

Vẽ đồ thị

# Tạo bảng tần số
freq4 <- table(dataDT$AnnualIncome)

# Chuyển thành data frame
AnnualIncome <- as.data.frame(freq4)
colnames(AnnualIncome) <- c("AnnualIncome", "Count")

# Vẽ biểu đồ cột
ggplot(AnnualIncome, aes(x = AnnualIncome, y = Count)) +
  geom_col(fill = "#F08080", color = "black") +
  geom_text(aes(label = Count), vjust = -0.5, color = "black")