Ở phần thực hành này, ta sẽ làm việc với bộ dữ liệu diabetes.csv.

library(readr); library(readxl)
diabetes_metadata <- read_excel("Dataset/diabetes_metadata.xlsx")
diabetes <- as.data.frame(read_csv("Dataset/diabetes.csv"))
## Parsed with column specification:
## cols(
##   Pregnancies = col_double(),
##   Glucose = col_double(),
##   BloodPressure = col_double(),
##   SkinThickness = col_double(),
##   Insulin = col_double(),
##   BMI = col_double(),
##   DiabetesPedigreeFunction = col_double(),
##   Age = col_double(),
##   Outcome = col_double()
## )

1 Bài tập 1

Hãy kiểm tra bộ dữ liệu này có missing data không.

Đáp án

## [1] 0

2 Bài tập 2

Sử dụng apply(), sapply(), và apply() để trích xuất giá trị nhỏ nhất và lớn nhất ở mỗi biến số của bộ diabetes. Đầu ra của 3 hàm này có gì khác biệt?

Gợi ý: Để xuất ra giá trị nhỏ nhất và lớn nhất, ta sử dụng hàm range(). Đầu ra của hàm số này là một vector có 2 thành phần lần lượt là số min và số max.

Đáp án

Sử dụng hàm summary để kiểm lại kết quả.

##   Pregnancies        Glucose      BloodPressure    SkinThickness  
##  Min.   : 0.000   Min.   :  0.0   Min.   :  0.00   Min.   : 0.00  
##  1st Qu.: 1.000   1st Qu.: 99.0   1st Qu.: 62.00   1st Qu.: 0.00  
##  Median : 3.000   Median :117.0   Median : 72.00   Median :23.00  
##  Mean   : 3.845   Mean   :120.9   Mean   : 69.11   Mean   :20.54  
##  3rd Qu.: 6.000   3rd Qu.:140.2   3rd Qu.: 80.00   3rd Qu.:32.00  
##  Max.   :17.000   Max.   :199.0   Max.   :122.00   Max.   :99.00  
##     Insulin           BMI        DiabetesPedigreeFunction      Age       
##  Min.   :  0.0   Min.   : 0.00   Min.   :0.0780           Min.   :21.00  
##  1st Qu.:  0.0   1st Qu.:27.30   1st Qu.:0.2437           1st Qu.:24.00  
##  Median : 30.5   Median :32.00   Median :0.3725           Median :29.00  
##  Mean   : 79.8   Mean   :31.99   Mean   :0.4719           Mean   :33.24  
##  3rd Qu.:127.2   3rd Qu.:36.60   3rd Qu.:0.6262           3rd Qu.:41.00  
##  Max.   :846.0   Max.   :67.10   Max.   :2.4200           Max.   :81.00  
##     Outcome     
##  Min.   :0.000  
##  1st Qu.:0.000  
##  Median :0.000  
##  Mean   :0.349  
##  3rd Qu.:1.000  
##  Max.   :1.000

3 Bài tập 3

Tỉ lệ giá trị 0 ở mỗi biến số là bao nhiêu?

##              Pregnancies                  Glucose            BloodPressure 
##              0.144531250              0.006510417              0.045572917 
##            SkinThickness                  Insulin                      BMI 
##              0.295572917              0.486979167              0.014322917 
## DiabetesPedigreeFunction                      Age                  Outcome 
##              0.000000000              0.000000000              0.651041667
##              Pregnancies                  Glucose            BloodPressure 
##              0.144531250              0.006510417              0.045572917 
##            SkinThickness                  Insulin                      BMI 
##              0.295572917              0.486979167              0.014322917 
## DiabetesPedigreeFunction                      Age                  Outcome 
##              0.000000000              0.000000000              0.651041667

4 Bài tập 4

Hãy impute các giá trị 0 với số trung vị.

5 Bài tập 5

Hãy phân nhóm BMI thành

BMI Tình trạng dinh dưỡng
<18.5 Suy dinh dưỡng
18.5 - <25 Bình thường
25 - <30 Thừa cân
Từ 30 trở lên Béo phì

Hãy phân tuổi thành các nhóm 21-40, 41-60, 61-81

Hãy tính trung bình Glucose theo cặp nhóm BMI và nhóm tuổi.

##                    21-40     41-60    60-81
## Undernutrition  43.37500        NA       NA
## Normal          65.06173  52.75000 30.50000
## Overweight      72.79433  94.86538 46.25000
## Obese          112.40374 108.05691 42.95833
##                   21-40    41-60    60-81
## Undernutrition  95.2500       NA       NA
## Normal         105.6543 124.2222 112.3333
## Overweight     113.2199 127.9231 137.7500
## Obese          123.5230 132.4309 141.8333