Để đọc dữ liệu từ một tệp CSV vào trong R, ta có thể thực hiện bằng các cách sau:
Cách 1: Đọc dữ liệu bằng cách sử dụng file.choose() để chọn file từ hộp thoại:
d <- read.csv(file.choose(), header = T)
Cách 2: Đọc dữ liệu từ đường dẫn cụ thể:
read.csv(file = ’./data/abc.csv)
Để đọc dữ liệu từ một tệp Excel vào trong R, ta thực hiện các bước sau:
Bước 1: Cài đặt và load gói xlsx (nếu chưa được cài đặt) bằng lệnh install.packages(‘xlsx’)
Bước 2: Đọc dữ liệu file xlsx với câu lệnh read.xlsx()
Cách 1: Đọc dữ liệu bằng cách sử dụng file.choose() để chọn file từ hộp thoại:
read.xlsx(file.choose(), sheetIndex = 1, header = T)
Cách 2: Đọc dữ liệu từ đường dẫn cụ thể:
read.xlsx(file = ‘./data/abc.xlsx’)
Ví dụ
library('xlsx')
d <- read.xlsx(file = 'C:/Users/HP/Downloads/TelcoCustomerChurn.xlsx', sheetIndex = 1, header = T)
Datasets hay ggplot2 là một gói package bao gồm nhiều bộ dữ liệu mà ta có thể sử dụng sẵn trong R, để sử dụng ta thực hiện theo các bước sau:
Load package bằng lệnh library()
Hiển thị danh sách các datasets có sẵn trong package bằng lệnh data(package = ’’)
Lưu ý: Nếu chưa được cài đặt thì cài đặt bằng lệnh install.packages(’’)
Ví dụ
library('datasets')
data(package = 'datasets')
Gán dữ liệu từ package ’’ cho đối tượng a bằng cách a <- (tên bộ dữ liệu)
Hoặc đọc dữ liệu từ URL bằng lệnh a <- read.csv(“https://…csv”)
Ví dụ
a <- cars
Lấy dữ liệu từ World Bank
Load package library(WDI)
Tìm indicator về Total reserves trong World Bank bằng lệnh ind <- WDIsearch(‘Total reserves’)
Lấy dữ liệu về Total reserves cho Việt Nam: d <- WDI(indicator = ‘FI.RES.TOTL.MO’, country = c(‘VN’), extra = TRUE)
Chọn cột ‘year’ và ‘FI.RES.TOTL.MO’, xóa các hàng chứa giá trị NA
htp <- d %>% select(year, FI.RES.TOTL.MO)
htp <- na.omit(htp)
names(htp) <- c(‘year’, ‘DuTru’)
Giải thích các lệnh
is.data.frame(): Kiểm tra xem đây có phải là data frame không, True là phải, False là không phải.
length(): Kiếm tra độ dài của bộ dữ liệu (số cột).
names(): Tên của các cột trong bộ dự liễu.
dim(): Kích thước của bộ dữ liệu (số dòng và số cột).
library(): Hiển thị một bảng tổng quan về bộ dữ liệu.
skim(): Mô tả chi tiết các dữ liệu.
head(): Hiển thị 10 dòng đầu tiên của bộ dữ liệu.
tail(): Hiển thị 10 dòng cuối cùng của bộ dữ liệu.
str(): Hiển thị thông tin chi tiết về cấu trúc của bộ dữ.
is.na(): Kiểm tra xem có giá trị NA trong dữ liệu hay không, TRUE nếu tại vị trí tương ứng có giá trị NA, và FALSE nếu không.
sum(is.na()): Tính tổng số giá trị NA trong dữ liệu.
which(is.na()): Xác định vị trí của các giá trị NA trong dữ liệu.
Ví dụ
is.data.frame(a)
## [1] TRUE
length(a)
## [1] 2
names(a)
## [1] "speed" "dist"
dim(a)
## [1] 50 2
library(skimr)
skim(a)
Name | a |
Number of rows | 50 |
Number of columns | 2 |
_______________________ | |
Column type frequency: | |
numeric | 2 |
________________________ | |
Group variables | None |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
speed | 0 | 1 | 15.40 | 5.29 | 4 | 12 | 15 | 19 | 25 | ▂▅▇▇▃ |
dist | 0 | 1 | 42.98 | 25.77 | 2 | 26 | 36 | 56 | 120 | ▅▇▅▂▁ |
head(a,10)
## speed dist
## 1 4 2
## 2 4 10
## 3 7 4
## 4 7 22
## 5 8 16
## 6 9 10
## 7 10 18
## 8 10 26
## 9 10 34
## 10 11 17
tail(a,10)
## speed dist
## 41 20 52
## 42 20 56
## 43 20 64
## 44 22 66
## 45 23 54
## 46 24 70
## 47 24 92
## 48 24 93
## 49 24 120
## 50 25 85
str(a)
## 'data.frame': 50 obs. of 2 variables:
## $ speed: num 4 4 7 7 8 9 10 10 10 11 ...
## $ dist : num 2 10 4 22 16 10 18 26 34 17 ...
is.na(a)
## speed dist
## [1,] FALSE FALSE
## [2,] FALSE FALSE
## [3,] FALSE FALSE
## [4,] FALSE FALSE
## [5,] FALSE FALSE
## [6,] FALSE FALSE
## [7,] FALSE FALSE
## [8,] FALSE FALSE
## [9,] FALSE FALSE
## [10,] FALSE FALSE
## [11,] FALSE FALSE
## [12,] FALSE FALSE
## [13,] FALSE FALSE
## [14,] FALSE FALSE
## [15,] FALSE FALSE
## [16,] FALSE FALSE
## [17,] FALSE FALSE
## [18,] FALSE FALSE
## [19,] FALSE FALSE
## [20,] FALSE FALSE
## [21,] FALSE FALSE
## [22,] FALSE FALSE
## [23,] FALSE FALSE
## [24,] FALSE FALSE
## [25,] FALSE FALSE
## [26,] FALSE FALSE
## [27,] FALSE FALSE
## [28,] FALSE FALSE
## [29,] FALSE FALSE
## [30,] FALSE FALSE
## [31,] FALSE FALSE
## [32,] FALSE FALSE
## [33,] FALSE FALSE
## [34,] FALSE FALSE
## [35,] FALSE FALSE
## [36,] FALSE FALSE
## [37,] FALSE FALSE
## [38,] FALSE FALSE
## [39,] FALSE FALSE
## [40,] FALSE FALSE
## [41,] FALSE FALSE
## [42,] FALSE FALSE
## [43,] FALSE FALSE
## [44,] FALSE FALSE
## [45,] FALSE FALSE
## [46,] FALSE FALSE
## [47,] FALSE FALSE
## [48,] FALSE FALSE
## [49,] FALSE FALSE
## [50,] FALSE FALSE
sum(is.na(a))
## [1] 0
which(is.na(a))
## integer(0)
Trong một số trường hợp, chúng ta thu về là một dữ liệu lớn tuy nhiên ta lại không sử dụng hết. Để thuận tiện R hỗ trợ chức năng rút trích dữ liệu, ta thực hiện theo các bước sau:
Giải thích các lệnh
names(): Đổi tên cho các biến để thuận tiện cho việc thao tác.Ví dụ đổi tên các cột trong bộ dữ liệu a thành ‘S’, ‘D’.
rename(): Sử dụng để đổi tên biến.
Ví dụ
names(a) <- c('S', 'D')
Sau bước này, chũng ta chỉ cần gọi là ‘S’ và ‘D’
Giải thích các lệnh
a[x,y]: Rút trích giá trị tại hàng thứ x và cột thứ y.
a$X: Rút trích toàn bộ cột ‘X’.
a[,y]: Rút trích toàn bộ cột thú y.
a[x,]: Rút trích toàn bộ hàng thứ x.
a[,c(y1,y2)]: Rút trích toàn bộ cột thứ y1 và y2.
a[x1:x2,]: Rút trích hàng từ x1 đến x2.
a[c(x1,x3,x5,x7),]: Rút trích các hàng x1,x3,x5,x7.
a[c(x1,x3,x5,x7),c(y1,y3)]: Rút trích các hàng x1,x3,x5,x7 và các cột y1,y3.
a[a$H >=80,]: Tạo một bộ dữ liệu mới từ a chỉ với các dòng có giá trị ‘H’ lớn hơn hoặc bằng 80.
a[a\(X >=80 & a\)X <=86,]: Tạo một bộ dữ liệu mới từ a chỉ với các dòng có giá trị ‘X’ lớn hơn hoặc bằng 80 và nhỏ hơn hoặc bằng 86.
a[a\(X == 76 | a\)X == 80,]: Tạo một bộ dữ liệu mới từ a chỉ với các dòng có giá trị ‘X’ bằng 76 hoặc bằng 80.
Ví dụ
b <- a[7,2]
S <- a$S
c <- a[ ,1]
e <- a[3:7, ]
f <- a[c(2,4,6,8),c(1,2)]
g <- a[a$D >=35 & a$D <=70, ]
h <-a[a$D == 35 | a$D == 80, ]
i <- a[S != 15, ]
Ngoài các bộ dữ liệu mẫu có sẵn trong gói datasets trong R còn nhiều gói package khác như tidyverse, ggplot2 hay iris. Chúng ta có thể áp dụng rút trích dữ liệu như ở mục III cho những gói này một cách tương tự
Ngoài ra, đối với một số packgae còn có chức năng khác. Ví dụ như tidyverse.
Giải thích các lệnh
filter(d, color == ‘D’ | carat > 1): Lọc các hàng trong bộ dữ liệu diamonds có màu là ‘D’ hoặc có trọng lượng carat lớn hơn 1.
select(d1, color, carat, x, y, z): Chọn chỉ các cột ‘color’, ‘carat’, ‘x’, ‘y’, và ‘z’ từ bộ dữ liệu đã lọc (d1).
d %>% filter(color == ‘D’ | carat > 1): Lọc các hàng trong bộ dữ liệu diamonds có màu là ‘D’ hoặc có trọng lượng carat lớn hơn 1.
d1 %>% select(color, carat, x, y, z): Chọn chỉ các cột ‘color’, ‘carat’, ‘x’, ‘y’, và ‘z’ từ bộ dữ liệu đã lọc (d1).
d %>% filter(color == ‘D’ | carat > 1) %>% select(color, carat, x, y, z): Kết hợp lệnh filter và select ngay từ đầu bằng cách sử dụng %>%. Lọc các hàng có màu là ‘D’ hoặc có trọng lượng carat lớn hơn 1 và sau đó chọn chỉ các cột ‘color’, ‘carat’, ‘x’, ‘y’, và ‘z’.
Ví dụ
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.4.4 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
m <- a %>% filter(S>15)
Đây là bộ dữ liệu Thương mại điện tử về Quần áo Phụ nữ, tập trung vào đánh giá của khách hàng. Chất lượng và đánh giá từ người tiêu dùng đóng vai trò quan trọng trong quyết định mua sắm trực tuyến. Chúng ta sẽ khám phá một bộ dữ liệu về đánh giá sản phẩm thời trang phụ nữ. Được thu thập từ thực tế thương mại, dữ liệu đã được ẩn danh và các tham chiếu đến công ty trong các đánh giá đã được thay thế bằng “nhà bán lẻ”.
Tập dữ liệu này bao gồm có 10 biến và 23486 quan sát. Mỗi hàng tương ứng với đánh giá của khách hàng và bao gồm các biến:
ID quần áo: Phân loại sản phẩm cụ thể đang xem xét.
Tuổi: Tuổi người đánh giá.
Tiêu đề: Tiêu đề đánh giá.
Văn bản đánh giá: Nội dung đánh giá.
Xếp hạng: Điểm sản phẩm từ 1 đến 5.
IND được đề xuất: - 1 (Có đề xuất), 0 (Không đề xuất).
Số lượng phản hồi tích cực: Số lượng phản hồi tích cực.
Tên cấp cao: Tên cấp cao của sản phẩm.
Tên bộ phận: Tên bộ phận sản phẩm.
Tên lớp: Tên lớp sản phẩm
NV2 <- read.csv(file.choose(), header = T)
Theo nguồn Kaggle.com
Yêu cầu rút trích dữ liệu: “Tìm kiếm thông tin về đánh giá quần áo thương mại điện tử dành cho nữ bao gồm ID quần áo, tuổi của người đánh giá, xếp hạng và số lượng phản hồi tích cực”.
NV2tuoi <- NV2[,c(1,2,3)]
NV2rate <- NV2[,c(1,2,6)]
NV2ph <- NV2[,c(1,2,8)]
NV2a <- NV2[7,2]
NV2b <- NV2[ ,1]
NV2c <- NV2[3:7, ]
NV2d <- NV2[c(2,4,6,8),c(1,2)]
Sau khi thực hiện quá trình rút trích dữ liệu từ bộ dữ liệu thương mại điện tử về quần áo phụ nữ, chúng ta đã có cơ hội khám phá những thông tin quan trọng về cách người tiêu dùng đánh giá sản phẩm. Những kết quả từ quá trình rút trích dữ liệu không chỉ là số liệu khô khan mà là nguồn thông tin quý báu để định hình chiến lược kinh doanh và tiếp thị. Những phân tích này cung cấp một cái nhìn sâu sắc vào tâm lý của người tiêu dùng, giúp doanh nghiệp hiểu rõ hơn về những yếu tố nào là quan trọng đối với khách hàng của họ.
Yêu cầu tạo dữ liệu mới: “Tạo mô phỏng điểm đánh giá của từng khách hàng, biết mỗi số sao trong lượt đánh giá tỉ lệ thuận với số lượt phản hồi tích cực. Ta có Điểm đánh giá = Số sao x Số lượt phản hồi tích cực”
Một phần quan trọng của phân tích là tạo ra một mô hình điểm đánh giá dựa trên số lượng sao và số lượng phản hồi tích cực. Chúng ta sử dụng thư viện tidyverse trong R để tính điểm đánh giá:
library(tidyverse)
NV2$tich <- NV2$Rating*NV2$Positive.Feedback.Count
Với công thức này, chúng ta tạo ra một cột mới “tich” trong bộ dữ liệu, thể hiện điểm đánh giá dựa trên số sao và số lượng phản hồi tích cực. Điều này giúp chúng ta hiểu rõ hơn về cách mà người tiêu dùng đánh giá và tương tác với sản phẩm trên nền tảng thương mại điện tử.
Kết Luận
Qua việc phân tích dữ liệu và tạo mô hình điểm đánh giá, chúng ta đã có cái nhìn sâu sắc hơn về cách người tiêu dùng đánh giá quần áo phụ nữ trên nền tảng thương mại điện tử. Điều này có thể giúp các nhà bán lẻ và nhãn hiệu thời trang hiểu rõ hơn về nhu cầu và mong muốn của khách hàng, từ đó cải thiện trải nghiệm mua sắm trực tuyến.