# Danh sách các gói cần kiểm tra
packages <- c("readxl", "tidyverse", "dplyr", "ggplot2", "gridExtra", "GGally", "DescTools", "table1", "compareGroups", "simpleboot", "epiDisplay", "Publish")
# Kiểm tra các gói đã được cài đặt hay chưa
installed <- packages %in% rownames(installed.packages())
# Hiển thị kết quả
for (i in seq_along(packages)) {
if (installed[i]) {
cat(paste(packages[i], "đã được cài đặt.\n"))
} else {
cat(paste(packages[i], "chưa được cài đặt.\n"))
}
}
## readxl đã được cài đặt.
## tidyverse đã được cài đặt.
## dplyr đã được cài đặt.
## ggplot2 đã được cài đặt.
## gridExtra đã được cài đặt.
## GGally đã được cài đặt.
## DescTools đã được cài đặt.
## table1 đã được cài đặt.
## compareGroups đã được cài đặt.
## simpleboot đã được cài đặt.
## epiDisplay đã được cài đặt.
## Publish đã được cài đặt.
# Đọc file Obesity Data từ đường dẫn và lưu vào biến namlan2
namlan2 <- read.csv("C:/Users/dinht/OneDrive/Máy tính/Học nghiên cứu khoa học, thầy Tuấn dạy/Obesity Data.csv")
# số lượng quan sát và biến số
num_variables <- ncol(namlan2) # Số lượng biến số (số cột)
num_observations <- nrow(namlan2) # Số lượng quan sát (số dòng)
# In kết quả ra màn hình
cat("Số lượng biến số:", num_variables, "\n")
## Số lượng biến số: 13
cat("Số lượng quan sát:", num_observations, "\n")
## Số lượng quan sát: 1217
# Hiển thị 6 quan sát đầu tiên của dữ liệu namlan2
head(namlan2, 6)
## id gender height weight bmi age WBBMC wbbmd fat lean pcfat hypertension
## 1 1 F 150 49 21.8 53 1312 0.88 17802 28600 37.3 0
## 2 2 M 165 52 19.1 65 1309 0.84 8381 40229 16.8 1
## 3 3 F 157 57 23.1 64 1230 0.84 19221 36057 34.0 1
## 4 4 F 156 53 21.8 56 1171 0.80 17472 33094 33.8 1
## 5 5 M 160 51 19.9 54 1681 0.98 7336 40621 14.8 0
## 6 6 F 153 47 20.1 52 1358 0.91 14904 30068 32.2 1
## diabetes
## 1 1
## 2 0
## 3 0
## 4 0
## 5 0
## 6 0
# Hiển thị 6 quan sát cuối cùng của dữ liệu namlan2
tail(namlan2, 6)
## id gender height weight bmi age WBBMC wbbmd fat lean pcfat
## 1212 1222 F 153 50 21.4 59 1309 0.87 18328 29147 37.6
## 1213 1223 F 150 44 19.6 44 1474 0.95 12906 28534 30.1
## 1214 1224 F 148 51 23.3 58 1522 0.97 14938 33931 29.6
## 1215 1225 F 149 50 22.5 57 1409 0.93 16777 30598 34.4
## 1216 1226 F 144 49 23.6 67 1266 0.90 20094 27272 41.3
## 1217 1227 F 141 45 22.6 58 1228 0.91 14567 28111 33.2
## hypertension diabetes
## 1212 1 0
## 1213 0 1
## 1214 0 0
## 1215 1 0
## 1216 1 0
## 1217 0 0
# Tóm tắt dữ liệu namlan2
summary(namlan2)
## id gender height weight
## Min. : 1.0 Length:1217 Min. :136.0 Min. :34.00
## 1st Qu.: 309.0 Class :character 1st Qu.:151.0 1st Qu.:49.00
## Median : 615.0 Mode :character Median :155.0 Median :54.00
## Mean : 614.5 Mean :156.7 Mean :55.14
## 3rd Qu.: 921.0 3rd Qu.:162.0 3rd Qu.:61.00
## Max. :1227.0 Max. :185.0 Max. :95.00
## bmi age WBBMC wbbmd fat
## Min. :14.5 Min. :13.00 Min. : 695 Min. :0.650 Min. : 4277
## 1st Qu.:20.2 1st Qu.:35.00 1st Qu.:1481 1st Qu.:0.930 1st Qu.:13768
## Median :22.2 Median :48.00 Median :1707 Median :1.010 Median :16955
## Mean :22.4 Mean :47.15 Mean :1725 Mean :1.009 Mean :17288
## 3rd Qu.:24.3 3rd Qu.:58.00 3rd Qu.:1945 3rd Qu.:1.090 3rd Qu.:20325
## Max. :37.1 Max. :88.00 Max. :3040 Max. :1.350 Max. :40825
## lean pcfat hypertension diabetes
## Min. :19136 Min. : 9.2 Min. :0.000 Min. :0.0000
## 1st Qu.:30325 1st Qu.:27.0 1st Qu.:0.000 1st Qu.:0.0000
## Median :33577 Median :32.4 Median :1.000 Median :0.0000
## Mean :35463 Mean :31.6 Mean :0.507 Mean :0.1109
## 3rd Qu.:39761 3rd Qu.:36.8 3rd Qu.:1.000 3rd Qu.:0.0000
## Max. :63059 Max. :48.4 Max. :1.000 Max. :1.0000
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.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.1
## ✔ 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
# Thực hiện mã hóa
namlan2 <- namlan2 %>%
mutate(sex = if_else(gender == "F", 1, 0)) # Tạo cột sex với 1 cho "F" và 0 cho "M"
# Kiểm tra kết quả
head(namlan2)
## id gender height weight bmi age WBBMC wbbmd fat lean pcfat hypertension
## 1 1 F 150 49 21.8 53 1312 0.88 17802 28600 37.3 0
## 2 2 M 165 52 19.1 65 1309 0.84 8381 40229 16.8 1
## 3 3 F 157 57 23.1 64 1230 0.84 19221 36057 34.0 1
## 4 4 F 156 53 21.8 56 1171 0.80 17472 33094 33.8 1
## 5 5 M 160 51 19.9 54 1681 0.98 7336 40621 14.8 0
## 6 6 F 153 47 20.1 52 1358 0.91 14904 30068 32.2 1
## diabetes sex
## 1 1 1
## 2 0 0
## 3 0 1
## 4 0 1
## 5 0 0
## 6 0 1
# Mã hóa biến bmi thành biến obese
namlan2 <- namlan2 %>%
mutate(obese = case_when(
bmi < 18.5 ~ "Underweight", # Nếu bmi < 18.5 thì obese = "Underweight"
bmi >= 18.5 & bmi < 25.0 ~ "Normal", # Nếu 18.5 ≤ bmi < 25.0 thì obese = "Normal"
bmi >= 25.0 & bmi < 30.0 ~ "Overweight", # Nếu 25.0 ≤ bmi < 30.0 thì obese = "Overweight"
bmi >= 30.0 ~ "Obese" # Nếu bmi ≥ 30.0 thì obese = "Obese"
))
# Kiểm tra kết quả
head(namlan2)
## id gender height weight bmi age WBBMC wbbmd fat lean pcfat hypertension
## 1 1 F 150 49 21.8 53 1312 0.88 17802 28600 37.3 0
## 2 2 M 165 52 19.1 65 1309 0.84 8381 40229 16.8 1
## 3 3 F 157 57 23.1 64 1230 0.84 19221 36057 34.0 1
## 4 4 F 156 53 21.8 56 1171 0.80 17472 33094 33.8 1
## 5 5 M 160 51 19.9 54 1681 0.98 7336 40621 14.8 0
## 6 6 F 153 47 20.1 52 1358 0.91 14904 30068 32.2 1
## diabetes sex obese
## 1 1 1 Normal
## 2 0 0 Normal
## 3 0 1 Normal
## 4 0 1 Normal
## 5 0 0 Normal
## 6 0 1 Normal
# Tạo biến lean.kg và fat.kg từ lean và fat (đổi từ gram sang kilogram)
namlan2 <- namlan2 %>%
mutate(
lean.kg = lean / 1000, # Chuyển đổi từ gram sang kilogram
fat.kg = fat / 1000 # Chuyển đổi từ gram sang kilogram
)
# Kiểm tra kết quả
head(namlan2)
## id gender height weight bmi age WBBMC wbbmd fat lean pcfat hypertension
## 1 1 F 150 49 21.8 53 1312 0.88 17802 28600 37.3 0
## 2 2 M 165 52 19.1 65 1309 0.84 8381 40229 16.8 1
## 3 3 F 157 57 23.1 64 1230 0.84 19221 36057 34.0 1
## 4 4 F 156 53 21.8 56 1171 0.80 17472 33094 33.8 1
## 5 5 M 160 51 19.9 54 1681 0.98 7336 40621 14.8 0
## 6 6 F 153 47 20.1 52 1358 0.91 14904 30068 32.2 1
## diabetes sex obese lean.kg fat.kg
## 1 1 1 Normal 28.600 17.802
## 2 0 0 Normal 40.229 8.381
## 3 0 1 Normal 36.057 19.221
## 4 0 1 Normal 33.094 17.472
## 5 0 0 Normal 40.621 7.336
## 6 0 1 Normal 30.068 14.904
# Tạo tập dữ liệu men.overweight với điều kiện BMI và giới tính là nam giới (M)
men.overweight <- namlan2 %>%
filter(sex == 0 & bmi >= 25.0) # sex == 0 tương ứng với nam giới
# Kiểm tra số lượng biến số và quan sát trong tập dữ liệu mới
dim(men.overweight) # Hiển thị số dòng (quan sát) và số cột (biến số)
## [1] 85 17
# Tạo tập dữ liệu Subset chỉ bao gồm 6 biến số id, age, gender, bmi, lean và fat
Subset <- namlan2 %>%
select(id, age, gender, bmi, lean, fat)
# Kiểm tra kết quả
head(Subset)
## id age gender bmi lean fat
## 1 1 53 F 21.8 28600 17802
## 2 2 65 M 19.1 40229 8381
## 3 3 64 F 23.1 36057 19221
## 4 4 56 F 21.8 33094 17472
## 5 5 54 M 19.9 40621 7336
## 6 6 52 F 20.1 30068 14904