Tác giả: Nguyễn Hải Trường | 2019-05-30
Trong quá trình phân tích dữ liệu, sẽ có lúc chúng ta muốn nhìn dữ liệu theo các chiều khác nhau. Trong bài viết này, Ranalytics
sẽ hướng dẫn các bạn cách tách và gộp biến theo cách mà chúng ta mong muốn bằng việc sử dụng hàm separate()
và unite()
trong package tidyverse
.
Sử dụng dữ liệu giả lập, bao gồm thông tin ngày sinh và địa chỉ sinh sống của 3 học sinh cấp 3 sau đây:
data1 <- data.frame(
student = c("Viet", "Nam", "Quoc"),
dob = as.Date(c("1990-05-06", "1992-12-01", "1989-03-05")),
address = c("Trung Phung, Dong Da, Ha Noi", "Khoi Nghia, Tien Lang, Hai Phong", "Ngoc Son, Hiep Hoa, Bac Giang")
)
data1
## student dob address
## 1 Viet 1990-05-06 Trung Phung, Dong Da, Ha Noi
## 2 Nam 1992-12-01 Khoi Nghia, Tien Lang, Hai Phong
## 3 Quoc 1989-03-05 Ngoc Son, Hiep Hoa, Bac Giang
separate
Bây giờ chúng ta muốn tách biến dob
(ngày sinh) thành các biến ngày, tháng, năm sinh, và đồng thời tách biến address
thành các biến phường/xã, quận/huyện, tỉnh/TP.
Chúng ta sẽ sử dụng hàm separate()
library(tidyverse)
data2 <- data1 %>%
separate(dob, # tách biến `dob` thành 3 biến `year`, `month`, `day`
into = c("year", "month", "day"),
sep = "-" # ngăn cách bằng ký tự `-`
) %>%
separate(address, # tách biến `address` thành 3 biến `commune`, `district`, `city`
into = c("commune", "district", "city"),
sep = "," # ngăn cách bằng ký tự `,`
)
data2
## student year month day commune district city
## 1 Viet 1990 05 06 Trung Phung Dong Da Ha Noi
## 2 Nam 1992 12 01 Khoi Nghia Tien Lang Hai Phong
## 3 Quoc 1989 03 05 Ngoc Son Hiep Hoa Bac Giang
unite
Uniting là quá trình ngược lại với Separating
Cấu trúc hàm unite()
như sau:
data2 %>%
# Gộp các biến `year`, `month`, `day` thành 1 biến `ymd`
unite(ymd, # tên biến mới
year, month, day, # 3 biến muốn gộp
sep = "-" # ngăn cách bằng dấu "-"
) %>%
# Gộp các biến `commune`, `district`, `city` thành 1 biến `province`
unite(province,
commune, district, city,
sep = ","
)
## student ymd province
## 1 Viet 1990-05-06 Trung Phung, Dong Da, Ha Noi
## 2 Nam 1992-12-01 Khoi Nghia, Tien Lang, Hai Phong
## 3 Quoc 1989-03-05 Ngoc Son, Hiep Hoa, Bac Giang
Như vậy, chúng ta đã vừa được học cách tách và gộp biến theo cách mà chúng ta mong muốn bằng việc sử dụng hàm separate()
và unite()
trong package tidyverse
. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn
!