Tác giả: Nguyễn Hải Trường | 2019-03-25
Trong quá trình phân tích dữ liệu sẽ có thể phát sinh việc chúng ta muốn summarise nhiều biến cùng lúc trong tập dữ liệu. Trong bài viết này, Ranalytics
sẽ hướng dẫn các bạn cách sử dụng nhóm hàm summarise_if()
, summarise_at()
, summarise_all()
để xử lý vấn đề trên.
Về cơ bản, nhóm hàm trên sử dụng khi chúng ta muốn summarise nhiều biến cùng lúc, còn sự khác biệt của nhóm hàm trên là:
summarise_all()
: áp dụng đối với tất cả các biến trong tập dữ liệusummarise_at()
: chỉ áp dụng đối với những biến nhất định mà chúng ta chỉ địnhsummarise_if()
: chỉ áp dụng đối với những biến thỏa mãn những điều kiện mà chúng ta đã đặt ra.
Sử dụng dữ liệu iris
có sẵn trong R
. Dữ liệu bao gồm những thông số (đơn vị: cm) về chiều dài/rộng cánh hoa và đài hoa của 3 loài hoa: setosa
, versicolor
, virginica
(150 quan sát).
# Package sử dụng
library(dplyr)
library(knitr)
# Summary dữ liệu
iris %>% summary
## Sepal.Length Sepal.Width Petal.Length Petal.Width
## Min. :4.300 Min. :2.000 Min. :1.000 Min. :0.100
## 1st Qu.:5.100 1st Qu.:2.800 1st Qu.:1.600 1st Qu.:0.300
## Median :5.800 Median :3.000 Median :4.350 Median :1.300
## Mean :5.843 Mean :3.057 Mean :3.758 Mean :1.199
## 3rd Qu.:6.400 3rd Qu.:3.300 3rd Qu.:5.100 3rd Qu.:1.800
## Max. :7.900 Max. :4.400 Max. :6.900 Max. :2.500
## Species
## setosa :50
## versicolor:50
## virginica :50
##
##
##
# 6 quan sát đầu tiên của tập dữ liệu
iris %>%
head %>%
kable()
Sepal.Length | Sepal.Width | Petal.Length | Petal.Width | Species |
---|---|---|---|---|
5.1 | 3.5 | 1.4 | 0.2 | setosa |
4.9 | 3.0 | 1.4 | 0.2 | setosa |
4.7 | 3.2 | 1.3 | 0.2 | setosa |
4.6 | 3.1 | 1.5 | 0.2 | setosa |
5.0 | 3.6 | 1.4 | 0.2 | setosa |
5.4 | 3.9 | 1.7 | 0.4 | setosa |
Giả sử chúng ta muốn xem trung bình chiều dài, rộng cánh hoa và đài hoa của từng loài hoa: setosa, versicolor, virginica -> dùng summarise_all()
.
iris %>%
group_by(Species) %>%
summarise_all(list(average = mean) # average - đuôi tên của những biến mới, mean - hàm tính trung bình
) %>%
kable()
Species | Sepal.Length_average | Sepal.Width_average | Petal.Length_average | Petal.Width_average |
---|---|---|---|---|
setosa | 5.006 | 3.428 | 1.462 | 0.246 |
versicolor | 5.936 | 2.770 | 4.260 | 1.326 |
virginica | 6.588 | 2.974 | 5.552 | 2.026 |
Nếu chúng ta chỉ muốn xem trung bình chiều dài, rộng của đài hoa của từng loài hoa -> sử dụng summarise_at()
.
iris %>%
group_by(Species) %>%
summarise_at(c("Sepal.Length", "Sepal.Width"), # chỉ áp dụng với 2 này
list(average = mean) # average - đuôi tên của những biến mới, mean - hàm tính trung bình
) %>%
kable()
Species | Sepal.Length_average | Sepal.Width_average |
---|---|---|
setosa | 5.006 | 3.428 |
versicolor | 5.936 | 2.770 |
virginica | 6.588 | 2.974 |
Còn trong trường hợp, chúng ta muốn summarise chỉ số mean của những biến số (numeric) -> dùng summarise_if()
.
iris %>%
group_by(Species) %>%
summarise_if(is.numeric, # chỉ áp dụng đối với những biến numeric
list(average = mean) # average - đuôi tên của những biến mới, mean - hàm tính trung bình
) %>%
kable()
Species | Sepal.Length_average | Sepal.Width_average | Petal.Length_average | Petal.Width_average |
---|---|---|---|---|
setosa | 5.006 | 3.428 | 1.462 | 0.246 |
versicolor | 5.936 | 2.770 | 4.260 | 1.326 |
virginica | 6.588 | 2.974 | 5.552 | 2.026 |
Như vậy, chúng ta đã vừa được học cách summarise nhiều biến cùng 1 lúc bằng việc sử dụng nhóm hàm summarise_if()
, summarise_at()
, summarise_all()
trong dplyr
. Chúc các bạn học tập và làm việc hiệu quả với Ranalytics.vn
!