Các thư viện sử dụng
library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.2.3
library(datawizard)
library(ggstats)
library(plyr)
##
## Attaching package: 'plyr'
## The following object is masked from 'package:ggstats':
##
## round_any
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ tibble 3.2.1 ✔ dplyr 1.1.4
## ✔ tidyr 1.2.0 ✔ stringr 1.4.0
## ✔ readr 2.1.3 ✔ forcats 0.5.1
## ✔ purrr 0.3.4
## Warning: package 'tibble' was built under R version 4.2.3
## Warning: package 'dplyr' was built under R version 4.2.3
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::arrange() masks plyr::arrange()
## ✖ purrr::compact() masks plyr::compact()
## ✖ dplyr::count() masks plyr::count()
## ✖ dplyr::desc() masks plyr::desc()
## ✖ dplyr::failwith() masks plyr::failwith()
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::id() masks plyr::id()
## ✖ dplyr::lag() masks stats::lag()
## ✖ dplyr::mutate() masks plyr::mutate()
## ✖ dplyr::rename() masks plyr::rename()
## ✖ dplyr::summarise() masks plyr::summarise()
## ✖ dplyr::summarize() masks plyr::summarize()
Nhâp dữ liệu
dt <- read.csv('https://math.ued.udn.vn/wp-content/uploads/2024/10/So_lieu.csv')
# display top 5 row
head(dt)
## Dau_thoi_gian Ho_va_ten Tuoi Gioi_tinh Man_kinh U_vu_ben_nao
## 1 7/27/2024 10:40:35 Kiều Thị Thanh Hiền 37 Nữ Không phải
## 2 7/27/2024 11:16:14 Hồ Thị Kim Sa 54 Nữ Không phải
## 3 7/27/2024 11:24:17 Võ Thị Nga 46 Nữ Không trái
## 4 7/27/2024 18:32:41 Nguyễn Thị Ngân Thảo 48 Nữ Không trái
## 5 7/27/2024 20:27:32 Nguyễn Thị Thuận 76 Nữ có trái
## 6 7/27/2024 20:31:40 Trần Thị Diện 55 Nữ Không trái
## Vi_tri_u Kich_thuoc_u cT cN Giai_doan_benh Mo_benh_hoc ER_PR
## 1 Trên ngoài 2.5 2 1 IIB Ung thư biểu mô thể ống DƯƠNG
## 2 Trên trong 2.3 2 1 IIB Ung thư biểu mô thể ống ÂM
## 3 Trên trong 7.0 3 2 IIB Ung thư biểu mô thể ống DƯƠNG
## 4 Trên ngoài 3.5 2 0 IIA Ung thư biểu mô thể ống DƯƠNG
## 5 Trên trong 4.0 2 1 IIB Ung thư biểu mô thể ống DƯƠNG
## 6 Trên ngoài 2.5 2 1 IIB Ung thư biểu mô thể ống DƯƠNG
## HER2 Do_mo_hoc Phan_nhom_sinh_hoc Nam_phau_thuat
## 1 ÂM Grade 2 Luminal B 2021
## 2 ÂM Grade 2 Tam âm 2021
## 3 ÂM Grade 2 Luminal B 2020
## 4 ÂM Grade 2 Luminal B 2021
## 5 ÂM Grade 2 Luminal B 2021
## 6 ÂM Grade 2 Luminal B 2020
## Phuong_phap_phau_thuat_tai_vu Phuong_phap_phau_thuat_tai_hach
## 1 Cắt vú + tái tạo Nạo hạch nách
## 2 bảo tồn Sinh thiết hạch cửa
## 3 Cắt vú + tái tạo Nạo hạch nách
## 4 Cắt vú triệt căn Sinh thiết hạch cửa
## 5 Cắt vú triệt căn Nạo hạch nách
## 6 Cắt vú triệt căn Sinh thiết hạch cửa
## Bien_chung_som_sau_phau_thuat Bien_chung_muon_sau_phau_thuat
## 1 Không Không
## 2 Không Không
## 3 Không rối loạn cảm giác
## 4 Không Không
## 5 Không Không
## 6 Không Không
## Dieu_tri_tan_bo_tro Dieu_tri_hoa_tri_bo_tro Dieu_tri_xa_tri_bo_tro
## 1 không có có
## 2 không có có
## 3 có Không có
## 4 không có không
## 5 không có có
## 6 không có có
## Noi_tiet_bo_tro Hai_long_ve_phuong_phap_phau_thuat Nam_tai_phat
## 1 có Hài lòng 0
## 2 Không Hài lòng 0
## 3 có Hài lòng 2024
## 4 có Rất hài lòng 0
## 5 có Hài lòng 0
## 6 có Không hài lòng 0
## Thoi_gian_tai_phat_sau_dieu_tri X Nam_sinh Dia_chi
## 1 không NA
## 2 không NA
## 3 36 NA
## 4 NA
## 5 không NA
## 6 không NA
## Thoi_gian_ket_thuc_dieu_tri X.1 vi_tri_tai_phat
## 1 NA
## 2 NA
## 3 NA di căn xa
## 4 NA
## 5 NA
## 6 NA
Thay thế phần để trống bằng “Không đánh giá”
dt$Hai_long_ve_phuong_phap_phau_thuat=replace(dt$Hai_long_ve_phuong_phap_phau_thuat,dt$Hai_long_ve_phuong_phap_phau_thuat=="","Không đánh giá")
Vẽ biểu đồ
b<-ggplot(dt, aes(x=Hai_long_ve_phuong_phap_phau_thuat ,y = ..count..,fill = Hai_long_ve_phuong_phap_phau_thuat))+
geom_bar()
b
## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
Bổ sung nhãn tỉ lệ
b<-b+
geom_text(aes( label = scales::percent((..count..)/sum(..count..))), stat= "count",vjust = -.5)
b
Thay đổi tên các trục tọa độ và nhãn
b<-b+
labs(y = "Số lượng", x="Hài lòng về phương pháp phẫu thuật", fill="Hài lòng về phương pháp phẫu thuật")
b
Nếu muốn đếm số lượng của mỗi loại thì ta sử dụng lệnh sau
dt %>% count(Hai_long_ve_phuong_phap_phau_thuat)
## Hai_long_ve_phuong_phap_phau_thuat n
## 1 Hài lòng 691
## 2 Không hài lòng 5
## 3 Không đánh giá 10
## 4 Rất hài lòng 163
Phân lớp tuổi theo nhóm
dt$Nhom_tuoi<-recode_values(dt$Tuoi, list(`1`=1:39,`2`=40:60,`3`=61:100))
dt$Nhom_tuoi<-replace(dt$Nhom_tuoi,dt$Nhom_tuoi==1,"1-39")
dt$Nhom_tuoi<-replace(dt$Nhom_tuoi,dt$Nhom_tuoi==2,"40-60")
dt$Nhom_tuoi<-replace(dt$Nhom_tuoi,dt$Nhom_tuoi==3,"61-100")
ggplot(dt, aes(x= dt$Nhom_tuoi,y = ..count..,fill = dt$Nhom_tuoi))+ theme_classic()+
theme_classic()+
geom_bar() +
geom_text(aes( label = scales::percent((..count..)/sum(..count..))), stat= "count",vjust = -.5)+
labs(y = "Số lượng", x="Nhóm tuổi", fill="Nhóm tuổi")
## Warning: Use of `dt$Nhom_tuoi` is discouraged.
## ℹ Use `Nhom_tuoi` instead.
## Use of `dt$Nhom_tuoi` is discouraged.
## ℹ Use `Nhom_tuoi` instead.
## Use of `dt$Nhom_tuoi` is discouraged.
## ℹ Use `Nhom_tuoi` instead.
## Use of `dt$Nhom_tuoi` is discouraged.
## ℹ Use `Nhom_tuoi` instead.
Phân lớp kích thước u theo nhóm
dt$Nhom_kich_thuoc_u=as.numeric(dt$Kich_thuoc_u)
dt$Nhom_kich_thuoc_u=replace(dt$Nhom_kich_thuoc_u,dt$Nhom_kich_thuoc_u<=2,1)
dt$Nhom_kich_thuoc_u=replace(dt$Nhom_kich_thuoc_u,(dt$Nhom_kich_thuoc_u>2)&(dt$Nhom_kich_thuoc_u<=5),2)
dt$Nhom_kich_thuoc_u=replace(dt$Nhom_kich_thuoc_u,dt$Nhom_kich_thuoc_u>5,3)
dt$Nhom_kich_thuoc_u=replace(dt$Nhom_kich_thuoc_u,dt$Nhom_kich_thuoc_u==1,"0-2")
dt$Nhom_kich_thuoc_u=replace(dt$Nhom_kich_thuoc_u,dt$Nhom_kich_thuoc_u==2,"2-5")
dt$Nhom_kich_thuoc_u=replace(dt$Nhom_kich_thuoc_u,dt$Nhom_kich_thuoc_u==3,">5")
ggplot(dt, aes(x= Nhom_kich_thuoc_u,y = ..count..,fill = Nhom_kich_thuoc_u))+
geom_bar() +
geom_text(aes( label = scales::percent((..count..)/sum(..count..))), stat= "count",vjust = -.5)+
labs(y = "Số lượng", x="Nhóm kích thước u", fill="Nhóm kích thước u")
Barplot theo thời gian và theo nhóm
dt %>% count(Nam_phau_thuat,Phuong_phap_phau_thuat_tai_vu)->phau_thuat_tai_vu_theo_nam
ggplot(phau_thuat_tai_vu_theo_nam) +
aes(x = Nam_phau_thuat, fill = Phuong_phap_phau_thuat_tai_vu, weight = n, by = Nam_phau_thuat) +
geom_bar(position = "fill") +
geom_text(aes(label = scales::percent(after_stat(prop), accuracy = 0.1)),stat = "prop", position = position_fill(.5))+
labs(y = "Tỉ lệ", x="Năm phẫu thuật", fill="Phương pháp phẫu thuật tại vú") +
scale_y_continuous(labels = scales::percent)
## Warning: The following aesthetics were dropped during statistical transformation: by.
## ℹ This can happen when ggplot fails to infer the correct grouping structure in
## the data.
## ℹ Did you forget to specify a `group` aesthetic or to convert a numerical
## variable into a factor?
Vẽ biểu đồ điểm
group_by(phau_thuat_tai_vu_theo_nam,Nam_phau_thuat)%>% mutate(ti_le = 100*round(n/sum(n),3))->phau_thuat_tai_vu_theo_nam
ggplot(phau_thuat_tai_vu_theo_nam, aes(x=Nam_phau_thuat, y=ti_le, group=Phuong_phap_phau_thuat_tai_vu, color=Phuong_phap_phau_thuat_tai_vu)) +
theme_classic()+geom_line()+geom_point()+
labs(y = "Tỉ lệ", x="Năm phẫu thuật", color ="Phương pháp phẫu thuật tại vú")