Chương này minh họa cách sử dụng các package janitor, dplyr, gtsummary, rstatix, và base R để tóm tắt dữ liệu và tạo bảng với thống kê mô tả.
Chương này bao gồm cách để tạo bảng cơ bản, trong khi đó chương bao gồm cách để định dạng đẹp và in chúng.*
Mỗi package này đều có những ưu và nhược điểm trong từng khía cạnh như sự đơn giản, khả năng tiếp cận kết quả, chất lượng kết quả được hiển thị. Sử dụng chương này để quyết định cách tiếp cận nào phù hợp với trường hợp của bạn.
Bạn có một số lựa chọn khi tạo bảng tóm tắt và bảng chéo. Một số yếu tố cần xem xét bao gồm tính đơn giản của code, khả năng tùy chỉnh, đầu ra mong muốn [được in ra R console, dưới dạng dataframe hoặc dưới dạng hình ảnh “đẹp” .png/.jpeg /.html] và dễ xử lý hậu kỳ. Hãy xem xét các điểm dưới đây khi bạn chọn công cụ cho tình huống của mình.
- Dùng
0 từ janitor để tạo và “làm đẹp” cho bảng và bảng chéo# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
- Dùng
1 từ rstatix để dễ dàng tạo data frame các tóm tắt thống kê dạng số cho nhiều cột và / hoặc nhóm# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
- Dùng
# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
2 và
# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
3 từ dplyr dành choo các thống kê phức tạp hơn, đầu ra của tidy dataframe hoặc chuẩn bị dữ liệu cho
4# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
- Dùng
5 từ gtsummary để tạo ra các bảng chi tiết sẵn sàng xuất bản# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
- Dùng
6 từ base R nếu bạn không có khả năng truy cập vào các package trên# A tibble: 5 x 10
variable n min max median iqr mean sd se ci
1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
Chuẩn bị
Gọi packages
Đoạn code này hiển thị việc gọi các packages cần thiết cho các phân tích. Trong sổ tay này, chúng tôi nhấn mạnh đến lệnh
## # A tibble: 5 x 10
## variable n min max median iqr mean sd se ci
##
## 1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
## 2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
## 3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
## 4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
## 5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
7 từ pacman, giúp cài đặt các package nếu cần và gọi chúng để sử dụng. Bạn cũng có thể gọi các package đã được cài đặt với
## # A tibble: 5 x 10
## variable n min max median iqr mean sd se ci
##
## 1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
## 2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
## 3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
## 4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
## 5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
8 từ base R. Xem chương để biết thêm thông tin về các package của R.
pacman::p_load[
rio, # File import
here, # File locator
skimr, # get overview of data
tidyverse, # data management + ggplot2 graphics
gtsummary, # summary statistics and tests
rstatix, # summary statistics and statistical tests
janitor, # adding totals and percents to tables
scales, # easily convert proportions to percents
flextable # converting tables to pretty images
]
Nhập dữ liệu
Chúng ta sẽ nhập bộ dữ liệu về các trường hợp từ một vụ dịch Ebola mô phỏng. Nếu bạn muốn theo dõi, bấm để tải xuống dữ liệu linelist “đã làm sạch” [as .rds file]. Nhập dữ liệu của bạn bằng hàm
## # A tibble: 5 x 10
## variable n min max median iqr mean sd se ci
##
## 1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
## 2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
## 3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
## 4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
## 5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
9 từ package rio [chấp nhận nhiều loại tệp như .xlsx, .rds, .csv - xem thêm chi tiết tại chương ].
# import the linelist
linelist %
get_summary_stats[
2age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
Characteristic N = 5,888 age_years Mean [SD] 16 [13] Median [IQR] 13 [6, 23] Range 0, 84 Unknown 86 temp Mean [SD] 38.56 [0.98] Median [IQR] 38.80 [38.20, 39.20] Range 35.20, 40.80 Unknown 149
Có nhiều cách khác để chỉnh sửa các bảng này, bao gồm thêm giá trị p, chỉnh sửa màu sắc và tiêu đề, v.v. Các phần này được đề cập trong tài liệu trợ giúp đính kèm [nhập
## get information about each column in a dataset
summary[linelist]
36 trong cửa sổ Console], và một số được đề cập trong chương .
base R
Bạn có thể sử dụng hàm
## # A tibble: 5 x 10
## variable n min max median iqr mean sd se ci
##
## 1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
## 2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
## 3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
## 4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
## 5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
6 để tạo bảng đơn và bảng chéo các cột. Không giống như các cách ở trên, bạn phải chỉ định data frame mỗi khi bạn tham chiếu đến tên cột, như được trình bày dưới đây.
THẬN TRỌNG: Giá trị
# import the linelist
linelist %
get_summary_stats[
3age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
`linelist %>% get_summary_stats[
age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
4Có thể lập bảng chéo từ nhiều cột bằng cách liệt kê chúng nối tiếp nhau, phân tách bằng dấu phẩy. Hoặc là, bạn có thể gán cho mỗi cột một “tên” như
## get information about each column in a dataset
summary[linelist]
62.
`linelist %>% get_summary_stats[
age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
5`linelist %>% get_summary_stats[
age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
6Tỷ lệ
Để trả về tỷ lệ, hãy chuyển bảng trên vào hàm
## get information about each column in a dataset
summary[linelist]
63. Sử dụng đối số
## get information about each column in a dataset
summary[linelist]
64 để chỉ định xem bạn muốn tỷ lệ của hàng [1], của cột [2] hay của toàn bảng [3]. Để dễ nhìn, chúng ta pipe bảng trên vào hàm
## get information about each variable in a dataset
skim[linelist]
26 của base R, chỉ định 2 chữ số sau dấu phẩy.
`linelist %>% get_summary_stats[
age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
7`linelist %>% get_summary_stats[
age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
8 Tổng
Để thêm tổng hàng và tổng cột, hãy chuyển bảng vào hàm
## get information about each column in a dataset
summary[linelist]
66. Cách này hoạt động cho cả số lượng và tỷ lệ.
`linelist %>% get_summary_stats[
age, wt_kg, ht_cm, ct_blood, temp, # columns to calculate for
type = "common"] # summary stats to return`
9 Chuyển đổi thành data frame
Chuyển đổi trực tiếp một đối tượng dạng
## # A tibble: 5 x 10
## variable n min max median iqr mean sd se ci
##
## 1 age 5802 0 84 13 17 16.1 12.6 0.166 0.325
## 2 ct_blood 5888 16 26 22 2 21.2 1.69 0.022 0.043
## 3 ht_cm 5888 4 295 129 68 125. 49.5 0.645 1.26
## 4 temp 5739 35.2 40.8 38.8 1 38.6 0.977 0.013 0.025
## 5 wt_kg 5888 -11 111 54 25 52.6 18.6 0.242 0.475
6 sang một data frame không phải là một đường thẳng. Cách tiếp cận được trình bày như dưới đây: