You are on page 1of 2

Biến đổi dữ liệu Tidy Data (Dữ liệu sạch) – Nền tảng của việc biến đổi dữ liệu

với dplyr & tidyr


Cheat Sheet Dữ liệu Trong dữ liệu sạch, R sẽ giữ nguyên
sạch định dạng các biến theo dạng vector
Mỗi cột chứa Mỗi hàng chứa một
một biến quan sát (observation)

Câu lệnh Reshaping Data - Thay đổi cấu trúc dữ liệu


dplyr::tbl_df(iris)
Biến đổi dữ liệu sang dạng tbl, dạng dữ liệu này đơn dplyr::data_frame(a = 1:3, b = 4:6)
giản hơn khi kiểm tra dữ liệu. R chỉ hiển thị dữ liệu Nhóm các véc-tơ thành data frame
vừa với màn hình hiển thị dplyr::arrange(mtcars, mpg)
Source: local data frame [150 x 5] tidyr::gather(cases, "year", "n", 2:4) tidyr::spread(pollution, size, amount) Sắp xếp các dòng theo một biến
từ nhỏ đến lớn
Sepal.Length Sepal.Width Petal.Length Biến đổi dữ liệu dạng cột thành hàng Biến đổi dữ liệu dạng hàng thành cột
dplyr::arrange(mtcars, desc(mpg))
1 5.1 3.5 1.4
2 4.9 3.0 1.4 Sắp xếp các dòng theo một biến
3 4.7 3.2 1.3 từ lớn đến nhỏ
4 4.6 3.1 1.5
5 5.0 3.6 1.4 dplyr::rename(tb, y = year)
.. ... ... ... tidyr::separate(storms, date, c("y", "m", "d")) tidyr::unite(data, col, ..., sep) Thay đổi tên của một biến
Variables not shown: Petal.Width (dbl),
Species (fctr) Tách 1 cột thành nhiều cột Ghép nhiều cột thành một.

dplyr::glimpse(iris) Lấy dữ liệu theo dòng Lấy dữ liệu theo cột


Tóm tắt thông tin của định dạng dữ liệu tbl
utils::View(iris)
Hiển thị dữ liệu dạng bảng (tương tự như excel)
dplyr::filter(iris, Sepal.Length > 7)
Lọc các dòng với điều kiện xác định dplyr::select(iris, Sepal.Width, Petal.Length, Species)
dplyr::distinct(iris) Chọn các biến (cột) theo tên
Xóa các dòng có giá trị trùng nhau
Các hàm với “select”- ?select
dplyr::sample_frac(iris, 0.5, replace = TRUE)
Lấy ngẫu nhiên các quan sát theo tỉ lệ cho trước select(iris, contains("."))
Chọn các biến mà tên biến đó có chứa ký tự
dplyr::sample_n(iris, 10, replace = TRUE)
select(iris, ends_with("Length"))
Lấy ngẫu nhiêu n dòng Chọn các biến mà tên biến đó kết thúc với một chuỗi ký tự
dplyr::slice(iris, 10:15) select(iris, everything())
dplyr::%>% Chọn tất cả các biến
Chuyển đối tượng (object) ở phía bên trái dấu %>% Lấy các dòng theo vị trí select(iris, matches(".t."))
thành biến (argument) của hàm bên phải dấu %>% dplyr::top_n(storms, 2, date) Chọn biến mà tên biến đó khớp với điền kiện cho trước
Lấy và sắp xếp thứ tự n dòng đầu tiên select(iris, num_range("x", 1:5))
x %>% f(y) cho kết quả tương tự như f(x, y) Chọn các biên tên x1, x2, x3, x4, x5.
y %>% f(x, ., z) cho kết quả tương tư như f(x, y, z )
select(iris, one_of(c("Species", "Genus")))
Các phép toán logic trong R Chọn các biến mà tên biến đó nằm trong 1 nhóm các tên biến
select(iris, starts_with("Sepal"))
Sử dụng “piping” %>% làm cho việc theo dõi code đơn < Nhỏ hơn != Không bằng
Chọn các biến có tên bắt đầu với một chuỗi ký tự
giản hơn rất nhiều, ví dụ: > Lớn hơn %in% Chứa trong nhóm
== Bằng is.na Kiểm tra dữ liệu thiếu (NA) select(iris, Sepal.Length:Petal.Width)
iris %>%
<= Nhỏ hơn hoặc bằng !is.na Kiểm tra dữ liệu không thiếu Chọn tất cả các biến từ Sepal.Length đến Petal.Width
group_by(Species) %>%
summarise(avg = mean(Sepal.Width)) %>% Toán tử kết hợp logic đơn giản select(iris, -Species)
>= Lớn hơn hoặc bằng &,|,!,xor,any,all
arrange(avg) trong R Chọn tất cả các biến ngoại trừ Species
Lấy dữ liệu: devtools::install_github("rstudio/EDAWR")
RStudio® is a trademark of RStudio, Inc. • CC BY RStudio • info@rstudio.com • 844-448-1212 • rstudio.com Translator: ranalytics.vn Xem thêm: Vignettes(package = c("dplyr", "tidyr")) • dplyr 0.4.0• tidyr 0.2.0 • Updated: 1/15
Tóm tắt dữ liệu Tạo các biến mới Nối dữ liệu (Combine Data Sets)
a b
x1 x2 x1 x3
A 1 A T

dplyr::summarise(iris, avg = mean(Sepal.Length)) dplyr::mutate(iris, sepal = Sepal.Length + Sepal.


Mutating Joins
B
C
2
3 + B
D
F
T =
Tóm tắt dữ liệu thành các dòng Width)
Tính toán và tạo một hoặc nhiều biến mới x1 x2 x3
dplyr::left_join(a, b, by = "x1")
dplyr::summarise_each(iris, funs(mean)) A 1 T
dplyr::mutate_each(iris, funs(min_rank)) B 2 F
Ghép các dòng có cùng giá trị từ b đến a.
Áp dụng hàm với tất cả các cột trong dữ liệu Áp dụng hàm cho mỗi biến
C 3 NA

dplyr::count(iris, Species, wt = Sepal.Length) dplyr::transmute(iris, sepal = Sepal.Length + Sepal. x1 x3 x2 dplyr::right_join(a, b, by = "x1")


A T 1
Đếm số lượng các dòng khi giá trị của biến là duy Width) B F 2 Ghép các dòng có cùng giá trị từ a đến b
nhất (có hoặc không có trọng số) Tính toán và tạo biến mới, loại bỏ biến cũ. D T NA

x1 x2 x3 dplyr::inner_join(a, b, by = "x1")
A 1 T
B 2 F Giữ các giá trị có cả ở a & b
x1 x2 x3
dplyr::full_join(a, b, by = "x1")
Summarise sử dụng các hàm tính toán một véc-tơ Sử dụng “window function”, các hàm này tính toán 1 A
B
1
2
T
F Giữ tất cả các giá trị ở a & b
các giá trị và trả về giá trị, ví dụ: véc-tơ & trả ra giá trị là 1 véc-tơ, ví dụ: C 3 NA
D NA T

dplyr::lead Filtering Joins


dplyr::first min dplyr::cume_dist
Giá trị đầu tiên của Copy & tạo 1 véc-tơ có giá trị của Véc-tơ giá trị hàm phân phối dplyr::semi_join(a, b, by = "x1")
Giá trị nhỏ nhất của véc-tơ biến nhanh hơn 1 đơn vị với từng giá trị của biến
x1 x2
véc-tơ A 1
Giữ lại các dòng xuất hiện trong b
dplyr::last max dplyr::lag dplyr::cumall B 2

Giá trị cuối cùng của Giá trị lớn nhất của véc-tơ Véc-tơ giá trị logic tích lũy
Copy & tạo 1 véc-tơ có giá trị của theo điều kiên cho trước (tất x1 x2 dplyr::anti_join(a, b, by = "x1")
véc-tơ. mean biến chậm hơn 1 đơn vị cả các giá trị phải thỏa mãn) C 3
dplyr::nth dplyr::cumany Giư lại các dòng không có trong b
Giá trị thứ n của véc- Giá trị trung bình của véc- dplyr::dense_rank
Véc-tơ giá trị logic theo điều
tơ. tơ Thứ tự giá trị của biến (không tính kiện cho trước (có ít nhất 1 y z
dplyr::n trùng giá trị) giá trị thỏa mãn)
median dplyr::cummean x1 x2 x1 x2
Số lượng các quan sát dplyr::min_rank
trong véc-tơ Trung vị của véc-tơ Véc-tơ giá trị trung bình tích A 1 B 2

dplyr::n_distinct
Số lượng các giá trị
var
Phương sai của véc-tơ
Thứ tự giá trị của biến (tính trùng
giá trị)
lũy của x
Cumsum
Véc-tơ giá trị tổng tích lũy của Set Operations
B
C
2
3 + C
D
3
4 =
khác nhau trong véc- dplyr::percent_rank x
tơ sd Thứ tự giá trị trong khoảng [0, 1]. Cummax x1 x2
IQR Độ lệch tiêu chuẩn của Véc-tơ chứa các giá trị lớn B 2 dplyr::intersect(y, z)
IQR của một véc-tơ. dplyr::row_number nhất của x theo thứ tự
véc-tơ
Thứ tự giá trị của biến (tính trùng
C 3
Các dòng có ở cả y & z
cummin
giá trị - các giá trị trùng nhau được Véc-tơ chứa các giá trị nhỏ x1 x2
nhất của x theo thứ tự
Nhóm dữ liệu dplyr::union(y, z)
A 1
xếp thứ tự khác nhau) B 2
cumprod
dplyr::ntile(x,n) Véc-tơ giá trị của tích
C 3 Dòng có trong y hoặc z.
D 4
dplyr::group_by(iris, Species) Chia véc-tơ thành n nhóm pmax
dplyr::between(x,a,b) Véc-tơ giá trị lớn nhất x1 x2 dplyr::setdiff(y, z)
Nhóm các biến thành các hàng có cùng giá trị pmin A 1
của Species Kiểm tra các giá trị của x trong Véc-tơ giá trị nhỏ nhất
Dòng có trong y nhưng không có trong z
khoảng [a,b]
dplyr::ungroup(iris) Binding
Loại bỏ nhóm x1 x2
iris %>% group_by(Species) %>% mutate(…) A 1 dplyr::bind_rows(y, z)
iris %>% group_by(Species) %>% summarise(…)
Tạo các biến mới với mỗi nhóm B 2
Nối dòng dữ liệu từ z sang y,
Tính toán và trả các giá trị với mỗi nhóm C
B
3
2
C 3
D 4

x1 x2 x1 x2
dplyr::bind_cols(y, z)
A 1 B 2 Nối cột dữ liệu từ z sang y
B 2 C 3
Lấy dữ liệu: devtools::install_github("rstudio/EDAWR") C 3 D 4 Lưu ý: trùng giá trị của biến.

RStudio® is a trademark of RStudio, Inc. • CC BY RStudio • info@rstudio.com • 844-448-1212 • rstudio.com Translator: ranalytics.vn Xem thêm: Vignettes(package = c("dplyr", "tidyr")) • dplyr 0.4.0• tidyr 0.2.0 • Updated: 1/15

You might also like