tieuluan <- read.csv("D:/TMT_R/Retail Transaction export 2025-10-04 16-35-57.csv")
A <- tieuluan
#Thông tin
str(tieuluan) #xem cấu trúc
## 'data.frame': 100000 obs. of 10 variables:
## $ CustomerID : int 109318 993229 579675 799826 121413 463050 888163 843385 839609 184135 ...
## $ ProductID : chr "C" "C" "A" "D" ...
## $ Quantity : int 7 4 8 5 7 3 7 8 5 4 ...
## $ Price : num 80.1 75.2 31.5 98.9 93.2 ...
## $ TransactionDate : chr "2023-12-26 12:32:00.000" "2023-08-05 00:00:00.000" "2024-03-11 18:51:00.000" "2023-10-27 22:00:00.000" ...
## $ PaymentMethod : chr "Cash" "Cash" "Cash" "PayPal" ...
## $ StoreLocation : chr "176 Andrew Cliffs\nBaileyfort, HI 93354" "11635 William Well Suite 809\nEast Kara, MT 19483" "910 Mendez Ville Suite 909\nPort Lauraland, MO 99563" "87522 Sharon Corners Suite 500\nLake Tammy, MO 76234" ...
## $ ProductCategory : chr "Books" "Home Decor" "Books" "Books" ...
## $ DiscountApplied...: num 18.68 14.12 15.94 6.69 4.03 ...
## $ TotalAmount : num 456 258 212 461 626 ...
summary(tieuluan) #thóng kê mô tả
## CustomerID ProductID Quantity Price
## Min. : 14 Length:100000 Min. :1.000 Min. : 10.00
## 1st Qu.:250694 Class :character 1st Qu.:3.000 1st Qu.: 32.55
## Median :499679 Mode :character Median :5.000 Median : 55.12
## Mean :500464 Mean :5.009 Mean : 55.07
## 3rd Qu.:751105 3rd Qu.:7.000 3rd Qu.: 77.46
## Max. :999997 Max. :9.000 Max. :100.00
## TransactionDate PaymentMethod StoreLocation ProductCategory
## Length:100000 Length:100000 Length:100000 Length:100000
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
## DiscountApplied... TotalAmount
## Min. : 0.000046 Min. : 8.275
## 1st Qu.: 5.001013 1st Qu.: 95.163
## Median :10.030353 Median :200.368
## Mean :10.020155 Mean :248.335
## 3rd Qu.:15.018367 3rd Qu.:362.010
## Max. :19.999585 Max. :896.141
dim(tieuluan) #kích thước
## [1] 100000 10
names(tieuluan) #tên biến
## [1] "CustomerID" "ProductID" "Quantity"
## [4] "Price" "TransactionDate" "PaymentMethod"
## [7] "StoreLocation" "ProductCategory" "DiscountApplied..."
## [10] "TotalAmount"
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
tieuluan <- tieuluan %>%
mutate(
mucgia = case_when( #phân loại Price thành các mức
is.na(Price) ~ NA_character_, # Nếu Price bị thiếu, giữ nguyên NA nếu thiếu dữ liệu
Price < 20.000 ~ "Rất rẻ",
Price >= 20.000 & Price < 40.000 ~ "Rẻ",
Price >= 40.000 & Price < 60.000 ~ "Trung bình",
Price >= 60.000 & Price < 80.000 ~ "Mắc",
Price >= 80.000 ~ "Rất mắc"
)
)
tieuluan <- tieuluan %>%
mutate(
TotalAmount_mucgia = cut( #chia các gtrị thành nhóm nhỏ
TotalAmount,
breaks = 6, #chia 6 khoảng gtrị bằng nhau
labels = c("Rất thấp", "Thấp", "TB thấp", "TB cao", "Cao", "Rất cao"),
include.lowest = TRUE #gtrị nhỏ nhất vào nhóm đầu
)
)
library(dplyr)
library(stringr)
tieuluan <- tieuluan %>%
mutate(
tieubang = str_extract(StoreLocation, "[A-Z]{2}(?=\\s[0-9]{5}$)"),
) #2 chữ in hoa liên tiếp, khoảng trắng, 5 chữ số, cuối chuỗi, k lấy
data1 <- subset(
tieuluan,
ProductID == "A" &
Quantity > 3 &
PaymentMethod == "Cash"
)
head(data1)
## CustomerID ProductID Quantity Price TransactionDate
## 3 579675 A 8 31.52882 2024-03-11 18:51:00.000
## 5 121413 A 7 93.18851 2023-12-22 11:38:00.000
## 27 869542 A 4 98.85379 2024-03-24 15:55:00.000
## 54 94047 A 6 30.40141 2024-03-29 18:32:00.000
## 95 496177 A 5 25.91976 2023-08-10 02:46:00.000
## 123 88220 A 5 17.83851 2024-02-23 17:23:00.000
## PaymentMethod StoreLocation
## 3 Cash 910 Mendez Ville Suite 909\nPort Lauraland, MO 99563
## 5 Cash 0070 Michelle Island Suite 143\nHoland, VA 80142
## 27 Cash 750 Alyssa Junctions Suite 666\nPort Richard, NV 18166
## 54 Cash 9919 Smith Island Apt. 355\nPeterview, OK 37147
## 95 Cash 7455 Pena Cape\nTiffanystad, ME 78027
## 123 Cash 92480 Kelsey Club Apt. 792\nNorth Danabury, NV 52001
## ProductCategory DiscountApplied... TotalAmount mucgia TotalAmount_mucgia
## 3 Books 15.943701 212.01565 Rẻ Thấp
## 5 Electronics 4.030096 626.03048 Rất mắc Cao
## 27 Home Decor 8.930830 360.10132 Rất mắc TB thấp
## 54 Electronics 9.811217 164.51197 Rẻ Thấp
## 95 Electronics 5.391258 122.61179 Rẻ Rất thấp
## 123 Books 19.425364 71.86658 Rất rẻ Rất thấp
## tieubang
## 3 MO
## 5 VA
## 27 NV
## 54 OK
## 95 ME
## 123 NV
table(data1$Quantity)
##
## 4 5 6 7 8 9
## 656 712 637 697 709 698
data2 <- subset(
tieuluan,
PaymentMethod == "PayPal" &
TotalAmount_mucgia %in% c("Cao", "Rất cao") #các dòng cao hoặc rất cao
)
head(data2)
## CustomerID ProductID Quantity Price TransactionDate
## 235 176795 B 9 75.50576 2023-05-31 17:52:00.000
## 306 273092 A 7 97.59569 2024-01-01 00:44:00.000
## 431 135071 A 8 94.27291 2024-02-15 14:19:00.000
## 451 533585 C 9 97.48419 2024-04-08 15:56:00.000
## 477 779845 D 7 98.11782 2024-02-14 16:00:00.000
## 497 587590 D 9 88.37771 2023-08-25 23:40:00.000
## PaymentMethod StoreLocation
## 235 PayPal 216 Gay Streets Apt. 798\nFischerberg, IA 50769
## 306 PayPal 0513 John Islands Suite 477\nLake Abigailborough, MS 69968
## 431 PayPal 3460 Karen Path\nGarnerfurt, VI 50426
## 451 PayPal USNV Watkins\nFPO AP 77333
## 477 PayPal Unit 1552 Box 3800\nDPO AE 55171
## 497 PayPal 8711 Jonathon Vista Apt. 368\nLoriburgh, WI 89346
## ProductCategory DiscountApplied... TotalAmount mucgia TotalAmount_mucgia
## 235 Home Decor 8.402276 622.4540 Mắc Cao
## 306 Electronics 2.703798 664.6983 Rất mắc Cao
## 431 Clothing 12.605338 659.1159 Rất mắc Cao
## 451 Electronics 19.422449 706.9533 Rất mắc Cao
## 477 Clothing 6.521792 642.0315 Rất mắc Cao
## 497 Books 3.986390 763.6916 Rất mắc Rất cao
## tieubang
## 235 IA
## 306 MS
## 431 VI
## 451 AP
## 477 AE
## 497 WI
data3 <- subset(
tieuluan,
mucgia == "Rất mắc" &
Quantity >= 5
)
head(data3)
## CustomerID ProductID Quantity Price TransactionDate PaymentMethod
## 1 109318 C 7 80.07984 2023-12-26 12:32:00.000 Cash
## 4 799826 D 5 98.88022 2023-10-27 22:00:00.000 PayPal
## 5 121413 A 7 93.18851 2023-12-22 11:38:00.000 Cash
## 11 266491 C 8 98.79273 2023-09-25 04:38:00.000 Debit Card
## 15 798425 D 5 95.01176 2023-10-27 17:50:00.000 Cash
## 17 633299 D 8 90.11467 2024-02-28 21:34:00.000 Credit Card
## StoreLocation ProductCategory
## 1 176 Andrew Cliffs\nBaileyfort, HI 93354 Books
## 4 87522 Sharon Corners Suite 500\nLake Tammy, MO 76234 Books
## 5 0070 Michelle Island Suite 143\nHoland, VA 80142 Electronics
## 11 388 Matthew Lane Apt. 592\nWest Andreachester, IN 96537 Books
## 15 1573 Petty Parkway Apt. 835\nJordanmouth, IN 05999 Clothing
## 17 1250 Gary Way Apt. 756\nSouth Thomasport, ND 39813 Clothing
## DiscountApplied... TotalAmount mucgia TotalAmount_mucgia tieubang
## 1 18.677100 455.8628 Rất mắc TB cao HI
## 4 6.686337 461.3438 Rất mắc TB cao MO
## 5 4.030096 626.0305 Rất mắc Cao VA
## 11 14.174953 678.3112 Rất mắc Cao IN
## 15 16.248395 397.8694 Rất mắc TB thấp IN
## 17 15.174414 611.5224 Rất mắc Cao ND
dim(data3)
## [1] 12529 13
data4 <- subset(
tieuluan,
ProductID %in% c("A", "B") &
Quantity >= 5 &
TotalAmount > mean(tieuluan$TotalAmount, na.rm = TRUE) #bỏ qua các gtrị trung bình
)
head(data4)
## CustomerID ProductID Quantity Price TransactionDate PaymentMethod
## 5 121413 A 7 93.18851 2023-12-22 11:38:00.000 Cash
## 8 843385 A 8 56.02516 2023-10-11 06:48:00.000 Debit Card
## 20 818911 B 5 77.09058 2024-04-06 18:59:00.000 Credit Card
## 26 609241 A 7 62.02824 2023-06-12 07:02:00.000 PayPal
## 33 628270 A 5 61.43280 2023-06-04 00:37:00.000 Debit Card
## 40 939765 B 9 59.69753 2023-07-09 05:55:00.000 Debit Card
## StoreLocation ProductCategory
## 5 0070 Michelle Island Suite 143\nHoland, VA 80142 Electronics
## 8 489 Juan Loop Apt. 093\nNorth Brettville, WV 72610 Home Decor
## 20 44623 Elizabeth Throughway Apt. 440\nAmberview, VA 51707 Books
## 26 Unit 7268 Box 3644\nDPO AP 43969 Clothing
## 33 6472 Jones Courts Apt. 861\nWest Dawnport, KS 09150 Books
## 40 763 Castro Greens Suite 106\nLake Katrina, OK 64411 Books
## DiscountApplied... TotalAmount mucgia TotalAmount_mucgia tieubang
## 5 4.030096 626.0305 Rất mắc Cao VA
## 8 6.344306 419.7661 Trung bình TB thấp WV
## 20 19.252574 311.2433 Mắc TB thấp VA
## 26 18.388756 354.3541 Mắc TB thấp AP
## 33 6.323548 287.7404 Mắc Thấp KS
## 40 18.778120 436.3871 Trung bình TB thấp OK
tieuluan$TransactionDate <- as.POSIXct(tieuluan$TransactionDate) # đảm bảo là dạng ngày-giờ không phải văn bản
data5 <- subset(
tieuluan,
TransactionDate >= as.POSIXct("2023-07-01") & #tạo mốc thời gian
TransactionDate <= as.POSIXct("2023-12-31") &
PaymentMethod %in% c("PayPal", "Credit Card")
)
head(data5)
## CustomerID ProductID Quantity Price TransactionDate PaymentMethod
## 4 799826 D 5 98.88022 2023-10-27 22:00:00 PayPal
## 7 888163 D 7 13.12194 2023-12-26 05:32:00 PayPal
## 12 65632 D 8 78.12314 2023-12-29 05:07:00 PayPal
## 13 26863 B 3 39.00328 2023-12-27 15:34:00 Credit Card
## 28 418277 A 9 27.45019 2023-11-29 11:40:00 Credit Card
## 35 101274 D 7 85.31977 2023-12-16 23:10:00 Credit Card
## StoreLocation ProductCategory
## 4 87522 Sharon Corners Suite 500\nLake Tammy, MO 76234 Books
## 7 USNV Harrell\nFPO AA 62814 Clothing
## 12 PSC 1498, Box 4142\nAPO AP 10928 Electronics
## 13 623 William Track Apt. 920\nPort Dave, NE 02045 Electronics
## 28 71524 Margaret Dam\nNorth Rhondaborough, VA 49112 Clothing
## 35 70323 Stacey Underpass Suite 300\nBishopberg, IL 77977 Books
## DiscountApplied... TotalAmount mucgia TotalAmount_mucgia tieubang
## 4 6.686337 461.34377 Rất mắc TB cao MO
## 7 16.295127 76.88591 Rất rẻ Rất thấp AA
## 12 14.704311 533.08538 Mắc TB cao AP
## 13 14.368436 100.19737 Rẻ Rất thấp NE
## 28 4.398935 236.18410 Rẻ Thấp VA
## 35 13.207796 518.35637 Rất mắc TB cao IL
tieuluan$TransactionDate <- as.POSIXct(tieuluan$TransactionDate)
data6 <- subset(
tieuluan,
TransactionDate >= as.POSIXct("2023-10-01") &
TransactionDate <= as.POSIXct("2023-12-31") &
PaymentMethod %in% c("PayPal", "Credit Card") &
tieubang %in% c("VA", "MO", "HI") &
TotalAmount > 300
)
head(data6)
## CustomerID ProductID Quantity Price TransactionDate PaymentMethod
## 4 799826 D 5 98.88022 2023-10-27 22:00:00 PayPal
## 313 355438 D 9 55.61784 2023-10-16 23:19:00 Credit Card
## 351 192560 D 5 98.00185 2023-10-12 04:55:00 Credit Card
## 511 717164 C 7 62.54341 2023-11-19 20:12:00 PayPal
## 727 249307 D 8 77.80279 2023-10-21 23:20:00 PayPal
## 1293 976218 C 8 74.05333 2023-12-26 08:55:00 Credit Card
## StoreLocation ProductCategory
## 4 87522 Sharon Corners Suite 500\nLake Tammy, MO 76234 Books
## 313 65975 Jenna Radial Apt. 579\nEllenshire, MO 00568 Books
## 351 0312 Michael Rapid\nDouglasland, VA 93822 Books
## 511 63253 Sanchez Inlet Apt. 638\nPort Isaiah, VA 33109 Clothing
## 727 544 Zhang Walks Apt. 271\nNorth Maxwellstad, HI 20021 Electronics
## 1293 599 Rebecca Parkway\nAmyland, HI 08330 Books
## DiscountApplied... TotalAmount mucgia TotalAmount_mucgia tieubang
## 4 6.686337 461.3438 Rất mắc TB cao MO
## 313 12.357424 438.7042 Trung bình TB thấp MO
## 351 15.782371 412.6742 Rất mắc TB thấp VA
## 511 16.868322 363.9537 Mắc TB thấp VA
## 727 10.288496 558.3844 Mắc TB cao HI
## 1293 9.210174 537.8631 Mắc TB cao HI
#thêm cột tháng và quý
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
tieuluan <- tieuluan %>%
mutate(
Month = format(TransactionDate, "%m"),
Quarter = quarter(TransactionDate))
# Thống kê mô tả 1 biến
thongke1 <- tieuluan %>%
summarise(
Sogiaodich = n(),
Giatritb = mean(TotalAmount, na.rm = TRUE),
max = max(TotalAmount, na.rm = TRUE),
min = min(TotalAmount, na.rm = TRUE),
Trungvi = median(TotalAmount, na.rm = TRUE),
Dolechchuan = sd(TotalAmount, na.rm = TRUE),
Q1 = quantile(TotalAmount, 0.25, na.rm = TRUE),
Q3 = quantile(TotalAmount, 0.75, na.rm = TRUE)
)
head(thongke1)
## Sogiaodich Giatritb max min Trungvi Dolechchuan Q1 Q3
## 1 100000 248.335 896.1412 8.274825 200.3684 184.5548 95.16342 362.01
Dựa vào bảng thông kê trên
Tổng giá trị giao dịch là 100.000 giao dịch
Giá trị trung bình của giá trị giao dịch là 248.335
Trung vị: 200.37
Giá trị tối thiểu và tối đa: 8.27 – 896.14 → khoảng cách rất lớn, nhấn mạnh biến động giao dịch đa dạng.
Độ lệch chuẩn: 184.55
Q1 và Q3: 95.16 – 362.01, phản ánh đa số giao dịch ở mức vừa phải
#tính thống kê mô tả cho từng loại sản phẩm (A–D) theo cột Price
thongke2 <- tieuluan %>%
group_by(ProductID) %>%
summarise(
Soluong = n(),
Giatritb = mean(Price, na.rm = TRUE),
max = max(Price, na.rm = TRUE),
min = min(Price, na.rm = TRUE),
Trungvi = median(Price, na.rm = TRUE),
Dolechchuan = sd(Price, na.rm = TRUE),
Q1 = quantile(Price, 0.25, na.rm = TRUE),
Q3 = quantile(Price, 0.75, na.rm = TRUE)
) %>%
arrange(ProductID)
head(thongke2)
## # A tibble: 4 × 9
## ProductID Soluong Giatritb max min Trungvi Dolechchuan Q1 Q3
## <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 A 24752 55.0 100. 10.0 54.7 26.1 32.4 77.7
## 2 B 24997 55.0 100. 10.0 55.3 26.0 32.5 77.4
## 3 C 25209 55.2 100. 10.0 55.3 25.9 32.7 77.4
## 4 D 25042 55.1 100. 10.0 55.1 25.9 32.7 77.3
Dựa vào bảng thông kê trên
Số lượng giao dịch của các sản phẩm tương đương nhau, khoảng 24.700–25.200 giao dịch, nghĩa là mức phổ biến gần như đồng đều.
Giá trung bình và trung vị đều xấp xỉ 55 cho tất cả sản phẩm, cho thấy giá bán ổn định giữa các sản phẩm.
Độ lệch chuẩn đều xấp xỉ gần 26
Khoảng giá Q1–Q3 đều vào khoảng 32–77 phản ánh phần lớn giao dịch nằm trong khoảng giá vừa phải
Giá tối đa đều xấp xỉ gần 100 và tối thiểu đều xấp xỉ gần bằng 10 cho tất cả sản phẩm → giá dao động rộng
#giá trung bình của từng sản phẩm theo cách thanh toán
thongke3 <- tieuluan %>%
group_by(ProductID, PaymentMethod) %>%
summarise(
Sogiaodich = n(),
Giatritb = mean(Price, na.rm = TRUE),
max = max(Price, na.rm = TRUE),
min = min(Price, na.rm = TRUE),
Trungvi = median(Price, na.rm = TRUE),
Dolechchuan = sd(Price, na.rm = TRUE),
Q1 = quantile(Price, 0.25, na.rm = TRUE),
Q3 = quantile(Price, 0.75, na.rm = TRUE)
) %>%
arrange(ProductID, desc(Giatritb)) #desc() theo thứ tự giảm dần,xem nhanh phương thức thanh toán nào có giá trung bình cao nhất cho từng sản phẩm.
## `summarise()` has grouped output by 'ProductID'. You can override using the
## `.groups` argument.
head(thongke3)
## # A tibble: 6 × 10
## # Groups: ProductID [2]
## ProductID PaymentMethod Sogiaodich Giatritb max min Trungvi Dolechchuan
## <chr> <chr> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 A Cash 6169 55.6 100. 10.0 55.9 26.0
## 2 A Credit Card 6277 55.4 100. 10.0 55.5 25.9
## 3 A Debit Card 6088 54.7 100. 10.0 54.4 26.2
## 4 A PayPal 6218 54.1 100. 10.0 53.3 26.1
## 5 B Debit Card 6216 55.5 100. 10.0 55.6 26.0
## 6 B Credit Card 6296 55.2 100. 10.0 55.4 25.8
## # ℹ 2 more variables: Q1 <dbl>, Q3 <dbl>
Dựa vào bảng thông kê trên
Giá trung bình của các sản phẩm A,B,C,D khá giống nhau, nằm trong khoảng 54.13 – 55.58.
Khi so sánh theo phương thức thanh toán: Cash và Credit Card có giá trung bình cao hơn Debit Card và PayPal khoảng 0.4 – 1.5 đơn vị.
Giá tối thiểu và tối đa cho tất cả sản phẩm dao động từ 10 – 100
Q1–Q3 nằm trong khoảng 31.6 – 78.2, cho thấy nửa số giao dịch rơi vào mức giá vừa phải
Độ lệch chuẩn đều xấp xỉ gần 26
#giá thay đổi theo quý và loại hàng hóa
thongke4 <- tieuluan %>%
group_by(Quarter, ProductCategory) %>%
summarise(
Giatritb = mean(Price, na.rm = TRUE),
max = max(Price, na.rm = TRUE),
min = min(Price, na.rm = TRUE),
Trungvi = median(Price, na.rm = TRUE),
Dolechchuan = sd(Price, na.rm = TRUE),
Q1 = quantile(Price, 0.25, na.rm = TRUE),
Q3 = quantile(Price, 0.75, na.rm = TRUE)
) %>%
arrange(Quarter, desc(Giatritb))
## `summarise()` has grouped output by 'Quarter'. You can override using the
## `.groups` argument.
head(thongke4)
## # A tibble: 6 × 9
## # Groups: Quarter [2]
## Quarter ProductCategory Giatritb max min Trungvi Dolechchuan Q1 Q3
## <int> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 Books 55.3 100. 10.0 55.3 26.2 32.7 78.3
## 2 1 Electronics 55.1 100. 10.0 55.3 26.0 32.5 77.6
## 3 1 Home Decor 54.9 100. 10.0 54.7 26.0 32.3 77.5
## 4 1 Clothing 54.9 100. 10.0 55.3 25.8 32.8 76.7
## 5 2 Clothing 55.3 100. 10.0 55.7 25.9 33.1 77.5
## 6 2 Books 55.3 100. 10.0 55.6 26.1 32.4 78.0
Dựa vào bảng thống kê trên
*Giá Books và Clothing so với Electronics và Home Decor chênh lệch không nhiều.
Giá tối thiểu và tối đa cho tất cả sản phẩm dao động từ 10 – 100 cho tất cả sản phẩm theo quý, chứng tỏ giá dao động rộng
Q1–Q3 nằm trong khoảng 32 – 78, cho thấy nửa số giao dịch rơi vào mức giá vừa phải
Giá trung bình giữa các quý không thay đổi nhiều, dao động xấp xỉ 55, điều này cho thấy giá bán ổn định theo thời gian.
This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:
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:
Note that the echo = FALSE
parameter was added to the
code chunk to prevent printing of the R code that generated the
plot.