{: style = “text-align: justify”}
bằng mã R. Mục tiêu chính của nó là tạo ra một khung giao tiếp giữa con người và máy tính về dữ liệu. Cụ thể hơn, tidyverse là một bộ sưu tập các gói R chia sẻ cùng một triết lý thiết kế cấp cao và cấu trúc ngữ pháp và dữ liệu cấp thấp, nhằm đảm bảo việc học một gói dễ dàng hơn và tạo nền tảng cho việc học các gói tiếp theo. Tidyverse đã trở thành một công cụ quan trọng và phổ biến trong cộng đồng người dùng R và khoa học dữ liệu. Nó không chỉ là một tập hợp các gói R, mà còn là một triết lý và một cách tiếp cận toàn diện để làm việc với dữ liệu.Mọi việc phân tích dữ liệu đều bao gồm các nhiệm vụ chính như là: nhập dữ liệu, làm sạch, xử lý dữ liệu, trực quan hóa và phân tích dữ liệu. Bằng cách cung cấp một bộ gói hợp nhất, tidyverse sẽ làm việc với dữ liệu một cách hiệu quả hơn. Ngoài ra, tidyverse cho phép người dùng cài đặt các gói bằng một câu lệnh duy nhất, điều này đơn giản hóa quá trình cài đặt và đảm bảo người dùng có quyền truy cập vào các gói cốt lõi của hệ sinh thái tidyverse. Mặc dù, tidyverse cung cấp một bộ công cụ mạnh mẽ, nhưng nó nhận thức rằng các dự án khoa học dữ liệu thường đòi hỏi sử dụng các gói chuyên ngành ngoài phạm vi của tidyverse. Mục tiêu của tidyverse không phải giải quyết tất cả các vấn đề có thể có, mà là cung cấp các công cụ cho các thách thức phổ biến nhất trong khoa học dữ liệu. Tiếp cận này cho phép người dùng tận dụng ưu điểm của tidyverse trong khi tích hợp các gói chuyên ngành khác theo nhu cầu.Có thể nói, tidyverse là một ngôn ngữ để giải quyết các thách thức trong khoa học dữ liệu bằng mã R. Mục tiêu chính của nó là tạo ra một khung giao tiếp giữa con người và máy tính về dữ liệu. Cụ thể hơn, tidyverse là một bộ sưu tập các gói R chia sẻ cùng một triết lý thiết kế cấp cao và cấu trúc ngữ pháp và dữ liệu cấp thấp, nhằm đảm bảo việc học một gói dễ dàng hơn và tạo nền tảng cho việc học các gói tiếp theo. Tidyverse đã trở thành một công cụ quan trọng và phổ biến trong cộng đồng người dùng R và khoa học dữ liệu. Nó không chỉ là một tập hợp các gói R, mà còn là một triết lý và một cách tiếp cận toàn diện để làm việc với dữ liệu. Mọi việc phân tích dữ liệu đều bao gồm các nhiệm vụ chính như là: nhập dữ liệu, làm sạch, xử lý dữ liệu, trực quan hóa và phân tích dữ liệu. Bằng cách cung cấp một bộ gói hợp nhất, tidyverse sẽ làm việc với dữ liệu một cách hiệu quả hơn. Ngoài ra, tidyverse cho phép người dùng cài đặt các gói bằng một câu lệnh duy nhất, điều này đơn giản hóa quá trình cài đặt và đảm bảo người dùng có quyền truy cập vào các gói cốt lõi của hệ sinh thái tidyverse. Mặc dù, tidyverse cung cấp một bộ công cụ mạnh mẽ, nhưng nó nhận thức rằng các dự án khoa học dữ liệu thường đòi hỏi sử dụng các gói chuyên ngành ngoài phạm vi của tidyverse. Mục tiêu của tidyverse không phải giải quyết tất cả các vấn đề có thể có, mà là cung cấp các công cụ cho các thách thức phổ biến nhất trong khoa học dữ liệu. Tiếp cận này cho phép người dùng tận dụng ưu điểm của tidyverse trong khi tích hợp các gói chuyên ngành khác theo nhu cầu.
https://docs.google.com/spreadsheets/d/1jqHRGjiMls8xKvHIQwxeqwdTosKiYX5jTBlMeeKS6jc/edit?usp=sharing
Kỷ lục bán hàng của 100.000 mặt hàng theo khu vực, quốc gia và kênh bán hàng trên toàn cầu từ năm 2010 đến năm 2017. Dữ liệu này rất hữu ích cho hoạt động thực hành và thực hành vì dữ liệu này không thiên vị và được các cơ quan dữ liệu có uy tín kiểm tra. Bạn cũng có thể tìm thấy dữ liệu tương tự và hơn thế nữa trong eforexcel.com. Các điểm dữ liệu bao gồm đồ dùng văn phòng, ngũ cốc, trái cây, đồ gia dụng, đồ ăn nhẹ và mỹ phẩm.
Các biến của dữ liệu:
Biến ‘Region’: Vùng đất
Biến ‘Country’: Quốc gia
Biến ‘Item Type’: Loại mặt hàng
Biến ‘Sales Channel’: Kênh bán hàng
Biến ‘Order Priority’: Thứ tự ưu tiên
Biến ‘Order Date’: Ngày đặt hàng
Biến ‘Order ID’: ID đơn đặt hàng
Biến ‘Ship Date’: Ngày xuất hàng
Biến ‘Units Sold’: Đơn vị bán
Biến ‘Unit Price’: Giá cả
Biến ‘Unit Cost’: Chi phí
Biến ‘Total Revenue’: Tổng doanh thu
Biến ‘Total Cost’: Tổng chi phí
Biến ‘Total Profit’: Tổng lợi nhuận
library(readr)
dulieu <- read_csv("2023/100000 Sales Records.csv")
## Rows: 100000 Columns: 14
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (7): Region, Country, Item Type, Sales Channel, Order Priority, Order Da...
## dbl (7): Order ID, Units Sold, Unit Price, Unit Cost, Total Revenue, Total C...
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
str(dulieu)
## spc_tbl_ [100,000 × 14] (S3: spec_tbl_df/tbl_df/tbl/data.frame)
## $ Region : chr [1:100000] "Middle East and North Africa" "Central America and the Caribbean" "Sub-Saharan Africa" "Sub-Saharan Africa" ...
## $ Country : chr [1:100000] "Azerbaijan" "Panama" "Sao Tome and Principe" "Sao Tome and Principe" ...
## $ Item Type : chr [1:100000] "Snacks" "Cosmetics" "Fruits" "Personal Care" ...
## $ Sales Channel : chr [1:100000] "Online" "Offline" "Offline" "Online" ...
## $ Order Priority: chr [1:100000] "C" "L" "M" "M" ...
## $ Order Date : chr [1:100000] "10/8/2014" "2/22/2015" "12/9/2015" "9/17/2014" ...
## $ Order ID : num [1:100000] 5.35e+08 8.75e+08 8.54e+08 8.93e+08 1.29e+08 ...
## $ Ship Date : chr [1:100000] "10/23/2014" "2/27/2015" "1/18/2016" "10/12/2014" ...
## $ Units Sold : num [1:100000] 934 4551 9986 9118 5858 ...
## $ Unit Price : num [1:100000] 152.58 437.2 9.33 81.73 668.27 ...
## $ Unit Cost : num [1:100000] 97.44 263.33 6.92 56.67 502.54 ...
## $ Total Revenue : num [1:100000] 142510 1989697 93169 745214 3914726 ...
## $ Total Cost : num [1:100000] 91009 1198415 69103 516717 2943879 ...
## $ Total Profit : num [1:100000] 51501 791282 24066 228497 970846 ...
## - attr(*, "spec")=
## .. cols(
## .. Region = col_character(),
## .. Country = col_character(),
## .. `Item Type` = col_character(),
## .. `Sales Channel` = col_character(),
## .. `Order Priority` = col_character(),
## .. `Order Date` = col_character(),
## .. `Order ID` = col_double(),
## .. `Ship Date` = col_character(),
## .. `Units Sold` = col_double(),
## .. `Unit Price` = col_double(),
## .. `Unit Cost` = col_double(),
## .. `Total Revenue` = col_double(),
## .. `Total Cost` = col_double(),
## .. `Total Profit` = col_double()
## .. )
## - attr(*, "problems")=<externalptr>
d <- dulieu
names(d) <- c("Vùng", "Nước","Tên hàng", "Loại hàng", "Kênh", "Ưu tiên","Ngày đặt", "Mã đơn", "Ngày xuất", "Đơn vị", "Giá", "Phí", "Doanh thu", "Chi phí", "Lợi nhuận")
## Warning: The `value` argument of `names<-` must have the same length as `x` as of tibble
## 3.0.0.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
table(d$Vùng)
##
## Asia Australia and Oceania
## 14547 8113
## Central America and the Caribbean Europe
## 10731 25877
## Middle East and North Africa North America
## 12580 2133
## Sub-Saharan Africa
## 26019
d |> ggplot(aes(x = Vùng, y = after_stat(count))) + geom_bar(fill = 'blue') + geom_text(aes(label = scales::percent(after_stat(count/sum(count)))), stat = 'count', color = 'red', vjust = 1) + theme_classic() + labs(x = 'Vùng đất', y = 'Số người')
Nhìn vào thống kê mô tả ta thấy có 7 vùng đất được đề cập đến trong bộ dữ liệu là:
Asia (Châu Á) có 14547 quan sát chiếm 14,55%
Australia and Oceania (Úc và Châu Đại Dương) có 8113 quan sát chiếm 8,11%
Central America and the Caribbean (Trung Mỹ và Caribe) có 10731 quan sát chiếm 10,73%
Europe (Châu Âu) có 25877 quan sát chiếm 25,88%
Middle East and North Africa (Trung Đông và Bắc Phi) có 12580 quan sát chiếm 12,58%
North America (Bắc Mỹ) có 2133 quan sát chiếm 2,13%
Sub-Saharan Africa (Châu Phi cận Sahara) có 26019 quan sát chiếm 26,02%
Thông qua các dữ liệu ta có thể thấy cùng Châu Phi cận Sahara là biểu hiện xuất hiện nhiều nhất trong dữ liệu sau đó là Châu Âu, ngược lại thì Bắc Mỹ xuất hiện ít nhất.
table(d$`Tên hàng`)
##
## Baby Food Beverages Cereal Clothes Cosmetics
## 8407 8258 8421 8304 8370
## Fruits Household Meat Office Supplies Personal Care
## 8262 8278 8320 8426 8364
## Snacks Vegetables
## 8308 8282
table(d$`Tên hàng`)/sum(table(d$`Tên hàng`))
##
## Baby Food Beverages Cereal Clothes Cosmetics
## 0.08407 0.08258 0.08421 0.08304 0.08370
## Fruits Household Meat Office Supplies Personal Care
## 0.08262 0.08278 0.08320 0.08426 0.08364
## Snacks Vegetables
## 0.08308 0.08282
pie(table(d$`Tên hàng`), col = rainbow(12))
Có 12 mặt hàng được sử dụng cho dữ liệu thống kê: Baby Food (Thức ăn trẻ em), Beverages (Nước giải khát), Cereal (Ngũ cốc), Clothes (Quần áo), Cosmetics (Mỹ phẩm), Fruits (Trái cây), Household (Đồ dùng gia đình), Meat (Thịt), Office Supplies (Văn phòng phẩm), Personal Care (Chăm sóc cá nhân), Snacks (Đồ ăn nhẹ), Vegetables (Rau). Tất cả các mặc hàng đều có hơn 8% so với toàn bộ dữ liệu.
summary(d$`Doanh thu`)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 14 162928 467937 941975 1209475 5249075
V <-cut(d$`Doanh thu`, breaks=c(1,100000,1000000,6000000), labels=c('doanh thu thấp', 'doanh thu bình thường', 'doanh thu cao'))
table(V)
## V
## doanh thu thấp doanh thu bình thường doanh thu cao
## 18483 52440 29077
Khi thống kê mô tả có biến định lượng bằng câu lệnh summary có thể thấy đươc doanh thu của các lần bán hàng với giá trị nhỏ nhất là 14, giá trị lớn nhất là 5249025, mức trung bình là 941975, có 25% nơi có doanh thu nhỏ hơn 162928, có 50 % nơi có doanh thu dưới 467937 và có 75% có doanh thunhỏ hơn 1209475 (tính theo đơn vị USD).
summary(d$`Chi phí`)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 5 95900 283657 394091 568384 1738700
a <-cut(d$`Doanh thu`, breaks=c(1,100000,800000,2000000), labels=c('chi phí thấp', 'chi phí bình thường', 'chi phí cao'))
table(a)
## a
## chi phí thấp chi phí bình thường chi phí cao
## 18483 45685 19717
Khi thống kê mô tả có biến định lượng bằng câu lệnh summary có thể thấy đươc chi phí của các lần bán hàng với giá trị nhỏ nhất là 5, giá trị lớn nhất là 1738700, mức trung bình là 394091, có 25% nơi có chi phí nhỏ hơn 95900, có 50 % nơi có chi phí dưới 283657 và có 75% có chi phí nhỏ hơn 568384 (tính theo đơn vị USD).