dataecommerce <- read.csv("D:/Rdata/ecommerce_synthetic_dataset.csv",
stringsAsFactors = FALSE)
# Tạo bảng ánh xạ (mapping)
category_map <- data.frame(
ProductName = c("Laptop", "Smartphone", "Headphones", "Shoes", "T-shirt", "Book", "Watch"),
CorrectCategory = c("Electronics", "Electronics", "Electronics", "Apparel", "Apparel", "Books", "Accessories")
)
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
# Kết hợp (join) để thay thế Category cũ bằng Category đúng
dataecommerce <- dataecommerce %>%
left_join(category_map, by = "ProductName") %>%
mutate(Category = CorrectCategory) %>%
select(-CorrectCategory)Bộ dữ liệu tổng hợp thương mại, điện tử
Bộ dữ liệu E-commerce synthetic gồm 100.000 bản ghi và 21 biến. Dữ liệu mô tả hành vi mua sắm trực tuyến của khách hàng, bao gồm thông tin cá nhân (tuổi, giới tính, quốc gia), thông tin sản phẩm (tên, danh mục, giá, số lượng, tổng giá trị đơn hàng), cùng các yếu tố hành vi như giảm giá, điểm đánh giá, thời lượng phiên đăng nhập và nguồn truy cập. Dữ liệu có tính đầy đủ và đa dạng, phù hợp cho các phân tích về hành vi người tiêu dùng, xây dựng mô hình dự đoán trong lĩnh vực thương mại điện tử.
library(dplyr)
# Tạo bảng ánh xạ (mapping)
category_map <- data.frame(
ProductName = c("Laptop", "Smartphone", "Headphones", "Shoes", "T-shirt", "Book", "Watch"),
CorrectCategory = c("Electronics", "Electronics", "Electronics", "Apparel", "Apparel", "Books", "Accessories")
)
# Kết hợp (join) để thay thế Category cũ bằng Category đúng
dataecommerce <- dataecommerce %>%
left_join(category_map, by = "ProductName") %>%
mutate(Category = CorrectCategory) %>%
select(-CorrectCategory)
str(dataecommerce) #xem cấu trúc## 'data.frame': 100000 obs. of 21 variables:
## $ UserID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ UserName : chr "User_1" "User_2" "User_3" "User_4" ...
## $ Age : int 39 25 43 44 23 54 64 59 50 47 ...
## $ Gender : chr "Male" "Female" "Male" "Male" ...
## $ Country : chr "UK" "Canada" "Canada" "Germany" ...
## $ SignUpDate : chr "2021-02-01" "2020-12-04" "2022-07-08" "2021-06-07" ...
## $ ProductID : int 8190 9527 3299 8795 1389 1524 4981 1847 3054 4719 ...
## $ ProductName : chr "Shoes" "T-shirt" "Headphones" "T-shirt" ...
## $ Category : chr "Apparel" "Apparel" "Electronics" "Apparel" ...
## $ Price : num 532.4 848.8 64.9 465.1 331.8 ...
## $ PurchaseDate : chr "2021-02-25" "2021-09-22" "2021-11-30" "2021-10-14" ...
## $ Quantity : int 1 1 2 2 1 1 2 4 1 1 ...
## $ TotalAmount : num 532 849 130 930 332 ...
## $ HasDiscountApplied: chr "False" "True" "False" "False" ...
## $ DiscountRate : num 0.02 0.29 0.03 0.23 0.02 0.21 0.06 0.34 0.48 0.25 ...
## $ ReviewScore : num 5.1 5.1 3.2 4.3 5.1 4.6 3.7 3.6 4.8 5.2 ...
## $ ReviewText : chr "Excellent" "Excellent" "Good" "Good" ...
## $ LastLogin : chr "2024-05-03 04:04:27.591583" "2024-08-31 04:04:27.591606" "2024-07-28 04:04:27.591611" "2024-03-11 04:04:27.591615" ...
## $ SessionDuration : num 45 13.8 59.1 55.4 15 ...
## $ DeviceType : chr "Mobile" "Mobile" "Tablet" "Desktop" ...
## $ ReferralSource : chr "Social Media" "Social Media" "Organic Search" "Email Marketing" ...
## UserID UserName Age Gender Country SignUpDate ProductID ProductName
## 1 1 User_1 39 Male UK 2021-02-01 8190 Shoes
## 2 2 User_2 25 Female Canada 2020-12-04 9527 T-shirt
## 3 3 User_3 43 Male Canada 2022-07-08 3299 Headphones
## 4 4 User_4 44 Male Germany 2021-06-07 8795 T-shirt
## 5 5 User_5 23 Female Canada 2021-11-06 1389 Shoes
## 6 6 User_6 54 Male USA 2021-04-04 1524 Smartphone
## 7 7 User_7 64 Male USA 2021-07-07 4981 Laptop
## 8 8 User_8 59 Male India 2020-08-10 1847 Headphones
## 9 9 User_9 50 Non-Binary USA 2021-01-03 3054 T-shirt
## 10 10 User_10 47 Non-Binary UK 2020-01-31 4719 Book
## Category Price PurchaseDate Quantity TotalAmount HasDiscountApplied
## 1 Apparel 532.37 2021-02-25 1 532.37 False
## 2 Apparel 848.83 2021-09-22 1 848.83 True
## 3 Electronics 64.88 2021-11-30 2 129.76 False
## 4 Apparel 465.08 2021-10-14 2 930.16 False
## 5 Apparel 331.82 2021-01-12 1 331.82 False
## 6 Electronics 939.70 2021-08-05 1 939.70 False
## 7 Electronics 692.04 2021-12-02 2 1384.08 True
## 8 Electronics 571.93 2021-05-17 4 2287.72 True
## 9 Apparel 605.22 2021-07-13 1 605.22 False
## 10 Books 250.35 2021-01-19 1 250.35 True
## DiscountRate ReviewScore ReviewText LastLogin
## 1 0.02 5.1 Excellent 2024-05-03 04:04:27.591583
## 2 0.29 5.1 Excellent 2024-08-31 04:04:27.591606
## 3 0.03 3.2 Good 2024-07-28 04:04:27.591611
## 4 0.23 4.3 Good 2024-03-11 04:04:27.591615
## 5 0.02 5.1 Average 2024-07-02 04:04:27.591619
## 6 0.21 4.6 Poor 2024-09-26 04:04:27.591623
## 7 0.06 3.7 Poor 2024-04-17 04:04:27.591627
## 8 0.34 3.6 Excellent 2024-07-20 04:04:27.591631
## 9 0.48 4.8 Excellent 2024-03-19 04:04:27.591635
## 10 0.25 5.2 Good 2024-08-06 04:04:27.591640
## SessionDuration DeviceType ReferralSource
## 1 45.02 Mobile Social Media
## 2 13.83 Mobile Social Media
## 3 59.09 Tablet Organic Search
## 4 55.42 Desktop Email Marketing
## 5 14.99 Tablet Email Marketing
## 6 37.30 Mobile Social Media
## 7 60.09 Mobile Email Marketing
## 8 114.18 Desktop Email Marketing
## 9 24.97 Tablet Social Media
## 10 71.17 Tablet Organic Search
## UserID UserName Age Gender Country SignUpDate ProductID
## 99991 99991 User_99991 51 Male USA 2022-08-20 4917
## 99992 99992 User_99992 60 Male UK 2021-12-11 6618
## 99993 99993 User_99993 39 Non-Binary Canada 2022-02-12 9197
## 99994 99994 User_99994 58 Non-Binary Germany 2022-02-14 6578
## 99995 99995 User_99995 18 Non-Binary India 2020-10-05 5520
## 99996 99996 User_99996 25 Female UK 2020-11-18 8401
## 99997 99997 User_99997 53 Non-Binary Canada 2020-07-28 6555
## 99998 99998 User_99998 25 Male Canada 2020-04-13 7686
## 99999 99999 User_99999 63 Female Germany 2022-12-23 2885
## 100000 100000 User_100000 52 Female Germany 2020-07-12 3963
## ProductName Category Price PurchaseDate Quantity TotalAmount
## 99991 Laptop Electronics 45.94 2021-10-01 2 91.88
## 99992 Shoes Apparel 23.86 2021-03-06 4 95.44
## 99993 Smartphone Electronics 541.95 2021-04-02 1 541.95
## 99994 T-shirt Apparel 857.30 2021-09-26 1 857.30
## 99995 Headphones Electronics 932.63 2021-07-24 2 1865.26
## 99996 Shoes Apparel 213.12 2021-11-10 1 213.12
## 99997 T-shirt Apparel 672.12 2021-10-29 3 2016.36
## 99998 Laptop Electronics 515.35 2021-07-02 3 1546.05
## 99999 Watch Accessories 448.82 2021-09-27 2 897.64
## 100000 Laptop Electronics 117.13 2021-10-30 2 234.26
## HasDiscountApplied DiscountRate ReviewScore ReviewText
## 99991 False 0.15 6.3 Good
## 99992 True 0.12 4.6 Average
## 99993 True 0.11 4.4 Poor
## 99994 False 0.25 4.2 Poor
## 99995 False 0.45 3.5 Excellent
## 99996 True 0.04 4.9 Poor
## 99997 True 0.42 5.4 Excellent
## 99998 True 0.21 4.0 Average
## 99999 True 0.09 2.0 Poor
## 100000 False 0.21 3.2 Good
## LastLogin SessionDuration DeviceType ReferralSource
## 99991 2024-06-16 04:04:28.072357 74.74 Tablet Email Marketing
## 99992 2024-03-27 04:04:28.072361 43.98 Desktop Organic Search
## 99993 2023-11-28 04:04:28.072365 5.81 Desktop Email Marketing
## 99994 2024-08-19 04:04:28.072369 63.29 Mobile Organic Search
## 99995 2024-03-06 04:04:28.072373 14.48 Mobile Organic Search
## 99996 2024-04-05 04:04:28.072377 96.64 Tablet Organic Search
## 99997 2024-04-16 04:04:28.072381 60.98 Tablet Social Media
## 99998 2024-08-28 04:04:28.072384 15.69 Tablet Social Media
## 99999 2024-10-07 04:04:28.072388 28.95 Tablet Organic Search
## 100000 2024-10-11 04:04:28.072392 68.52 Desktop Organic Search
## UserID UserName Age Gender
## Min. : 1 Length:100000 Min. :18.00 Length:100000
## 1st Qu.: 25001 Class :character 1st Qu.:31.00 Class :character
## Median : 50001 Mode :character Median :43.00 Mode :character
## Mean : 50001 Mean :43.46
## 3rd Qu.: 75000 3rd Qu.:56.00
## Max. :100000 Max. :69.00
## Country SignUpDate ProductID ProductName
## Length:100000 Length:100000 Min. :1000 Length:100000
## Class :character Class :character 1st Qu.:3228 Class :character
## Mode :character Mode :character Median :5520 Mode :character
## Mean :5508
## 3rd Qu.:7776
## Max. :9998
## Category Price PurchaseDate Quantity
## Length:100000 Min. : 10.0 Length:100000 Min. :1.000
## Class :character 1st Qu.: 257.1 Class :character 1st Qu.:1.000
## Mode :character Median : 505.9 Mode :character Median :2.000
## Mean : 505.6 Mean :2.496
## 3rd Qu.: 753.7 3rd Qu.:4.000
## Max. :1000.0 Max. :4.000
## TotalAmount HasDiscountApplied DiscountRate ReviewScore
## Min. : 10.02 Length:100000 Min. :0.0000 Min. :-0.600
## 1st Qu.: 494.68 Class :character 1st Qu.:0.1300 1st Qu.: 3.300
## Median : 966.08 Mode :character Median :0.2500 Median : 4.000
## Mean :1260.85 Mean :0.2498 Mean : 4.006
## 3rd Qu.:1850.33 3rd Qu.:0.3700 3rd Qu.: 4.700
## Max. :3999.72 Max. :0.5000 Max. : 8.600
## ReviewText LastLogin SessionDuration DeviceType
## Length:100000 Length:100000 Min. : 5.00 Length:100000
## Class :character Class :character 1st Qu.: 33.72 Class :character
## Mode :character Mode :character Median : 62.41 Mode :character
## Mean : 62.41
## 3rd Qu.: 91.04
## Max. :120.00
## ReferralSource
## Length:100000
## Class :character
## Mode :character
##
##
##
## [1] 100000 21
## [1] "UserID" "UserName" "Age"
## [4] "Gender" "Country" "SignUpDate"
## [7] "ProductID" "ProductName" "Category"
## [10] "Price" "PurchaseDate" "Quantity"
## [13] "TotalAmount" "HasDiscountApplied" "DiscountRate"
## [16] "ReviewScore" "ReviewText" "LastLogin"
## [19] "SessionDuration" "DeviceType" "ReferralSource"
Bộ dữ liệu có 100000 quan sát và 21 biến
## [1] "UserID" "UserName" "Age"
## [4] "Gender" "Country" "SignUpDate"
## [7] "ProductID" "ProductName" "Category"
## [10] "Price" "PurchaseDate" "Quantity"
## [13] "TotalAmount" "HasDiscountApplied" "DiscountRate"
## [16] "ReviewScore" "ReviewText" "LastLogin"
## [19] "SessionDuration" "DeviceType" "ReferralSource"
-UserID : Mã định danh duy nhất cho mỗi người dùng.
-UserName : Tên người dùng mô phỏng cho mỗi người dùng.
-Age: Độ tuổi của người dùng (từ 18 đến 70).
-Gender: Giới tính của khách hàng
-Country: Quốc gia của khách hàng
-SignUpDate: Ngày đăng kí tài khoản của khách hàng
-ProductID: Mã định danh sản phẩm
-ProductName: Tên sản phẩm mà khách hàng mua
-Category: Danh mục sản phẩm
-Price: Giá của sản phẩm mà khách hàng mua
-PurchaseDate: Ngày mua sản phẩm
-Quantity: Số lượng sản phẩm mà khách hàng mua (1-4)
-TotalAmount: Tổng tiền mà khách hàng phải bỏ ra khi mua sản phẩm
-PaymentMethod: Phương thức thanh toán
-HasDiscountApplied: Giao dịch đó có áp dụng bất kỳ hình thức giảm giá nào hay không. (TRUE/FALSE)
-DiscountRate: Tỷ lệ chiết khấu
-ReviewScore: Điểm đánh giá sản phẩm/giao dịch do khách để lại
-ReviewText: Nội dung/nhãn đánh giá
-LastLogin: Thời điểm đăng nhập gần nhất của người dùng
-SessionDuration: Thời lượng phiên truy cập
-DeviceType: Thiết bị truy cập
-ReferralSource: Nguồn giới thiệu
## 'data.frame': 100000 obs. of 21 variables:
## $ UserID : int 1 2 3 4 5 6 7 8 9 10 ...
## $ UserName : chr "User_1" "User_2" "User_3" "User_4" ...
## $ Age : int 39 25 43 44 23 54 64 59 50 47 ...
## $ Gender : chr "Male" "Female" "Male" "Male" ...
## $ Country : chr "UK" "Canada" "Canada" "Germany" ...
## $ SignUpDate : chr "2021-02-01" "2020-12-04" "2022-07-08" "2021-06-07" ...
## $ ProductID : int 8190 9527 3299 8795 1389 1524 4981 1847 3054 4719 ...
## $ ProductName : chr "Shoes" "T-shirt" "Headphones" "T-shirt" ...
## $ Category : chr "Apparel" "Apparel" "Electronics" "Apparel" ...
## $ Price : num 532.4 848.8 64.9 465.1 331.8 ...
## $ PurchaseDate : chr "2021-02-25" "2021-09-22" "2021-11-30" "2021-10-14" ...
## $ Quantity : int 1 1 2 2 1 1 2 4 1 1 ...
## $ TotalAmount : num 532 849 130 930 332 ...
## $ HasDiscountApplied: chr "False" "True" "False" "False" ...
## $ DiscountRate : num 0.02 0.29 0.03 0.23 0.02 0.21 0.06 0.34 0.48 0.25 ...
## $ ReviewScore : num 5.1 5.1 3.2 4.3 5.1 4.6 3.7 3.6 4.8 5.2 ...
## $ ReviewText : chr "Excellent" "Excellent" "Good" "Good" ...
## $ LastLogin : chr "2024-05-03 04:04:27.591583" "2024-08-31 04:04:27.591606" "2024-07-28 04:04:27.591611" "2024-03-11 04:04:27.591615" ...
## $ SessionDuration : num 45 13.8 59.1 55.4 15 ...
## $ DeviceType : chr "Mobile" "Mobile" "Tablet" "Desktop" ...
## $ ReferralSource : chr "Social Media" "Social Media" "Organic Search" "Email Marketing" ...
## [1] 0
Vậy không có quan sát nào trùng lặp
## UserID UserName Age Gender
## 0 0 0 0
## Country SignUpDate ProductID ProductName
## 0 0 0 0
## Category Price PurchaseDate Quantity
## 0 0 0 0
## TotalAmount HasDiscountApplied DiscountRate ReviewScore
## 0 0 0 0
## ReviewText LastLogin SessionDuration DeviceType
## 0 0 0 0
## ReferralSource
## 0
Ta thấy cũng không có biến nào bị trùng lặp trong bộ
library(dplyr)
dataecommerce <- dataecommerce %>%
mutate(AgeGroup = case_when(
Age < 18 ~ "Dưới 18",
Age >= 18 & Age <= 25 ~ "18-25",
Age > 25 & Age <= 35 ~ "26-35",
Age > 35 & Age <= 50 ~ "36-50",
TRUE ~ "Trên 50"
))
table(dataecommerce$AgeGroup, dataecommerce$DeviceType)##
## Desktop Mobile Tablet
## 18-25 5140 5185 5117
## 26-35 6244 6418 6531
## 36-50 9589 9730 9607
## Trên 50 12003 12235 12201
Bảng phân tổ cho thấy số lượng người dùng có xu hướng tăng dần theo độ tuổi ở cả ba loại thiết bị. Nhóm khách hàng trên 50 tuổi chiếm tỷ trọng cao nhất với khoảng hơn 12.000 người ở mỗi thiết bị, trong khi nhóm 18-25 tuổi có số lượng thấp nhất, chỉ khoảng 5.000 người. Điều này cho thấy người tiêu dùng lớn tuổi có xu hướng sử dụng các nền tảng thương mại điện tử thường xuyên hơn, có thể do họ có thu nhập ổn định và nhu cầu mua sắm đa dạng hơn.
Xét theo loại thiết bị, Mobile là phương tiện được sử dụng nhiều nhất trong hầu hết các nhóm tuổi, phản ánh xu hướng mua sắm qua điện thoại ngày càng phổ biến. Tuy nhiên, sự chênh lệch giữa ba loại thiết bị (Desktop, Mobile, Tablet) là không lớn, cho thấy hành vi sử dụng thiết bị tương đối đồng đều và đa nền tảng.
##
## Accessories Apparel Books Electronics
## 18-25 2206 4404 2228 6604
## 26-35 2751 5560 2743 8139
## 36-50 4102 8281 4202 12341
## Trên 50 5228 10417 5187 15607
Bảng phân tổ cho thấy nhóm khách hàng trên 50 tuổi và 36–50 tuổi là hai nhóm có hoạt động mua sắm sôi nổi nhất, đặc biệt ở các sản phẩm điện tử và thời trang. Điều này phản ánh khả năng chi tiêu ổn định và nhu cầu cao của nhóm khách hàng có thu nhập vững.
Ngược lại, nhóm 18–25 tuổi và 26–35 tuổi có số giao dịch thấp hơn, chủ yếu tập trung vào các sản phẩm giá vừa và thấp. Nhìn chung, độ tuổi càng cao thì mức chi tiêu và tần suất mua hàng càng lớn, cho thấy doanh nghiệp nên chú trọng hơn vào nhóm khách hàng trung niên và lớn tuổi trong chiến lược tiếp thị.
library(dplyr)
dataecommerce %>%
group_by(Country) %>%
summarise(
AvgPurchase = mean(TotalAmount, na.rm = TRUE),
MedianPurchase = median(TotalAmount, na.rm = TRUE),
Count = n()
) %>%
arrange(desc(AvgPurchase))## # A tibble: 6 × 4
## Country AvgPurchase MedianPurchase Count
## <chr> <dbl> <dbl> <int>
## 1 UK 1266. 969. 16699
## 2 Australia 1264. 979. 16570
## 3 Canada 1263. 958. 16767
## 4 India 1261. 972. 16538
## 5 USA 1256. 962. 16844
## 6 Germany 1255. 957. 16582
Kết quả phân tổ theo quốc gia (Country) cho thấy mức chi tiêu trung bình (AvgPurchase) của khách hàng ở các nước có sự khác biệt nhẹ nhưng ổn định quanh mức 1255.20-11265.534 đơn vị tiền tệ. Trong đó, Vương quốc Anh (UK) dẫn đầu với mức chi tiêu trung bình cao nhất (≈ 1265.5), tiếp theo là Australia và Canada, trong khi Đức (Germany) có mức chi tiêu trung bình thấp nhất (≈ 1255.2).
Giá trị trung vị (MedianPurchase) cũng có xu hướng tương tự, dao động từ 956 đến 979, cho thấy phân phối chi tiêu tương đối cân đối, không có chênh lệch cực đoan giữa các nước. Bên cạnh đó, số lượng giao dịch (Count) khá đồng đều giữa các quốc gia, phản ánh quy mô dữ liệu được thu thập công bằng.
Như vậy, giả định “Khách hàng ở các đất nước khác nhau có mức chi tiêu trung bình khác nhau” được chấp nhận một phần: mặc dù có sự khác biệt nhỏ giữa các nước, xu hướng chi tiêu của người dùng nhìn chung khá đồng nhất. Điều này gợi ý rằng hành vi mua sắm trong bộ dữ liệu này ít bị chi phối bởi yếu tố quốc gia, có thể do các quốc gia đều thuộc nhóm thị trường phát triển với mức sống tương đồng.
Giả định:“Mức chi tiêu của khách hàng có xu hướng tăng vào các quý cuối năm do ảnh hưởng của mùa lễ hội (Noel, Black Friday, Tết, v.v.).”
Trước khi phân tổ các mức chi tiêu theo mùa vụ,ta cần thực hiện chia thời gian thành 4 quý (quý 1, quý 2, quý 3, quý 4). Rồi sau đó thực hiện các bước tiếp theo.
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
dataecommerce <- dataecommerce %>%
mutate(
Quy = case_when(
quarter(PurchaseDate) == 1 ~ "Quy 1",
quarter(PurchaseDate) == 2 ~ "Quy 2",
quarter(PurchaseDate) == 3 ~ "Quy 3",
quarter(PurchaseDate) == 4 ~ "Quy 4"
)
)
library(dplyr)
summary_by_quy <- dataecommerce %>%
group_by(Quy) %>%
summarise(
AvgPurchase = mean(TotalAmount, na.rm = TRUE),
MedianPurchase = median(TotalAmount, na.rm = TRUE),
Count = n()
) %>%
arrange(Quy)
summary_by_quy## # A tibble: 4 × 4
## Quy AvgPurchase MedianPurchase Count
## <chr> <dbl> <dbl> <int>
## 1 Quy 1 1268. 970. 24877
## 2 Quy 2 1264. 976. 24643
## 3 Quy 3 1249. 958. 25132
## 4 Quy 4 1263. 962. 25348
Kết quả thống kê cho thấy mức chi tiêu trung bình của khách hàng giữa các quý trong năm có sự dao động nhẹ, nhưng không chênh lệch đáng kể. Cụ thể, Quý 1 ghi nhận mức chi tiêu trung bình cao nhất (≈ 1.267,6 đơn vị), trong khi Quý 3 có mức thấp nhất (≈ 1.248,7 đơn vị). Các quý còn lại (Quý 2 và Quý 4) dao động quanh mức 1.263 đơn vị, phản ánh xu hướng chi tiêu tương đối ổn định trong năm.
Giá trị trung vị (MedianPurchase) cũng có sự biến động nhỏ, cao nhất ở Quý 2 (976,31) và thấp nhất ở Quý 3 (957,76), cho thấy phân phối chi tiêu giữa các quý khá đồng đều, không có sự lệch mạnh do các giao dịch bất thường.
Như vậy, giả định “Mức chi tiêu trung bình của khách hàng tăng vào các quý cuối năm” không được ủng hộ rõ ràng trong tập dữ liệu này. Thay vào đó, hành vi chi tiêu có xu hướng ổn định quanh mức trung bình, chỉ giảm nhẹ ở Quý 3, có thể do giai đoạn giữa năm ít sự kiện mua sắm lớn. Kết quả này gợi ý rằng doanh nghiệp nên tập trung kích cầu mạnh hơn vào Quý 4 (qua các chiến dịch lễ hội, ưu đãi cuối năm) để khai thác tiềm năng tăng trưởng doanh thu mùa vụ.
library(dplyr)
thongke_category <- dataecommerce %>%
group_by(Category) %>%
summarise(tan_so = n()
) %>%
mutate(tan_suat = round(tan_so / sum(tan_so) * 100, 2)
) %>%
arrange(desc(tan_so))
print(thongke_category)## # A tibble: 4 × 3
## Category tan_so tan_suat
## <chr> <int> <dbl>
## 1 Electronics 42691 42.7
## 2 Apparel 28662 28.7
## 3 Books 14360 14.4
## 4 Accessories 14287 14.3
Kết quả thống kê tần suất cho thấy sự chênh lệch rõ rệt giữa các nhóm sản phẩm. Nhóm Electronics có tần suất xuất hiện cao nhất với 42,691 giao dịch (chiếm khoảng 42,7%), cho thấy khách hàng có xu hướng mua sắm các sản phẩm công nghệ nhiều nhất. Tiếp đến là Apparel với 28,662 giao dịch (28,7%), phản ánh nhu cầu lớn về thời trang. Trong khi đó, Books và Accessories chỉ chiếm khoảng 14% mỗi nhóm, tương đương hơn 14,000 giao dịch, thể hiện tần suất mua sắm thấp hơn đáng kể.
Tổng thể, kết quả này chỉ ra rằng các nhóm sản phẩm điện tử và thời trang có tần suất mua sắm cao nhất, là nguồn doanh thu chính của nền tảng, trong khi sách và phụ kiện có thể là phân khúc tiềm năng cần được thúc đẩy thêm thông qua chiến lược marketing phù hợp.
library(dplyr)
summary_total <- dataecommerce %>%
summarise(
mean_TotalAmount = mean(TotalAmount, na.rm = TRUE),
median_TotalAmount = median(TotalAmount, na.rm = TRUE),
sd_TotalAmount = sd(TotalAmount, na.rm = TRUE),
min_TotalAmount = min(TotalAmount, na.rm = TRUE),
max_TotalAmount = max(TotalAmount, na.rm = TRUE)
)
a1 <- as.matrix(summary_total)
a1 <- t(a1)
a2 <- as.data.frame(a1)
#3 hàng trên là để hoán đổi cột thành hàng và hàng thành cột cho dễ nhìn
colnames(a2) <- "TotalAmount"
print(a2)## TotalAmount
## mean_TotalAmount 1260.8524
## median_TotalAmount 966.0800
## sd_TotalAmount 964.1002
## min_TotalAmount 10.0200
## max_TotalAmount 3999.7200
Sau khi xuất kết quả, ta thấy:
Số tiền trung bình cho mỗi lần mua sắm là 1.260,85, cho thấy mức chi tiêu phổ biến của khách hàng nằm ở ngưỡng trung bình khá.
Do trung vị đạt 966,08, chênh lệch khá lớn, chứng tỏ dữ liệu có xu hướng lệch phải - tức có một số giao dịch có giá trị rất cao kéo mức trung bình lên.
Độ lệch chuẩn cao (964,10) thể hiện sự chênh lệch lớn trong mức chi tiêu giữa các khách hàng. Có người mua rất ít, nhưng cũng có người mua với giá trị gấp nhiều lần trung bình.
Giá trị nhỏ nhất (10,02) phản ánh những đơn hàng có giá trị thấp, có thể là sản phẩm rẻ hoặc khách chỉ mua thử.
Giá trị cao nhất (3.999,72) cho thấy vẫn có những khách hàng chi tiêu lớn, thể hiện nhóm khách “chịu chi” trong mua sắm trực tuyến.
library(dplyr)
summary_age36_50 <- dataecommerce %>%
filter(AgeGroup == "36-50") %>% # Lọc nhóm tuổi 36–50
group_by(Category) %>% # Gom theo danh mục sản phẩm
summarise(
Min_TTA = min(TotalAmount, na.rm = TRUE),
Max_TTA = max(TotalAmount, na.rm = TRUE),
Mean_TTA = mean(TotalAmount, na.rm = TRUE),
Median_TTA = median(TotalAmount, na.rm = TRUE),
Total_TTA = sum(TotalAmount, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(Category)
print(summary_age36_50)## # A tibble: 4 × 6
## Category Min_TTA Max_TTA Mean_TTA Median_TTA Total_TTA
## <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Accessories 10.1 3990. 1259. 952. 5162595.
## 2 Apparel 10.0 3993. 1254. 964. 10387544.
## 3 Books 10.6 3975. 1245. 953. 5233391.
## 4 Electronics 10.2 4000. 1265. 979. 15611967.
Dựa trên giá trị Total_Value, có thể thấy ở độ tuổi 35-50, khách hàng có xu hướng chi tiêu mạnh nhất cho thiết bị điện tử (15.611.967) và quần áo, thời trang (10.387.544). Điều này phản ánh rõ đặc điểm tiêu dùng của nhóm tuổi trung niên: họ thường đã có thu nhập ổn định, sẵn sàng đầu tư vào các sản phẩm phục vụ công việc, tiện nghi gia đình và hình ảnh cá nhân.
summary_quarter <- dataecommerce %>%
group_by(Quy, ProductName) %>%
summarise(
Min_TTA = min(TotalAmount, na.rm = TRUE),
Max_TTA = max(TotalAmount, na.rm = TRUE),
Mean_TTA = mean(TotalAmount, na.rm = TRUE),
Median_TTA = median(TotalAmount, na.rm = TRUE),
Total_TTA = sum(TotalAmount, na.rm = TRUE),
.groups = "drop"
) %>%
arrange(Quy, ProductName)
print(summary_quarter)## # A tibble: 28 × 7
## Quy ProductName Min_TTA Max_TTA Mean_TTA Median_TTA Total_TTA
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 Quy 1 Book 11.4 3984. 1295. 994. 4618672.
## 2 Quy 1 Headphones 10.8 3998. 1288. 971. 4669855.
## 3 Quy 1 Laptop 12.1 3986. 1288. 991. 4526483.
## 4 Quy 1 Shoes 11.3 3988. 1246. 961. 4274226.
## 5 Quy 1 Smartphone 10.3 3997. 1266. 990. 4576605.
## 6 Quy 1 T-shirt 10.9 3991. 1219. 932. 4343239.
## 7 Quy 1 Watch 10.1 3998. 1269. 954. 4524728.
## 8 Quy 2 Book 10.6 3996. 1258. 959. 4452181.
## 9 Quy 2 Headphones 10.2 4000. 1249. 968. 4360843.
## 10 Quy 2 Laptop 10.5 3999. 1282. 989. 4468986.
## # ℹ 18 more rows
Note that the echo = FALSE parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.