Hàm r norm trong r có nghĩa là gì
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ả. Show
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.
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
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
8 từ base R. Xem chương để biết thêm thông tin về các package của R.
Nhập dữ liệuChú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
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 ).
50 hàng đầu tiên của linelist được hiển thị như dưới đây. Duyệt dữ liệuskimr packageKhi sử dụng package skimr package, bạn có thể có được cái nhìn tổng quan chi tiết và đẹp về mặt thẩm mỹ của từng biến trong tập dữ liệu của mình. Đọc thêm về skimr tại trang github của nhà phát triển. Dưới đây, hàm
00 được áp dụng cho toàn bộ data frame
01 giúp bạn có cái nhìn tổng quan về data frame và tóm tắt của tất cả các cột (theo lớp).
Table 17.1: Data summary Name linelist Number of rows 5888 Number of columns 30 _______________________ Column type frequency: character 13 Date 4 factor 2 numeric 11 ________________________ Group variables None Variable type: character skim_variable n_missing complete_rate min max empty n_unique whitespace case_id 0 1.00 6 6 0 5888 0 outcome 1323 0.78 5 7 0 2 0 gender 278 0.95 1 1 0 2 0 age_unit 0 1.00 5 6 0 2 0 hospital 0 1.00 5 36 0 6 0 infector 2088 0.65 6 6 0 2697 0 source 2088 0.65 5 7 0 2 0 fever 249 0.96 2 3 0 2 0 chills 249 0.96 2 3 0 2 0 cough 249 0.96 2 3 0 2 0 aches 249 0.96 2 3 0 2 0 vomit 249 0.96 2 3 0 2 0 time_admission 765 0.87 5 5 0 1072 0 Variable type: Date skim_variable n_missing complete_rate min max median n_unique date_infection 2087 0.65 2014-03-19 2015-04-27 2014-10-11 359 date_onset 256 0.96 2014-04-07 2015-04-30 2014-10-23 367 date_hospitalisation 0 1.00 2014-04-17 2015-04-30 2014-10-23 363 date_outcome 936 0.84 2014-04-19 2015-06-04 2014-11-01 371 Variable type: factor skim_variable n_missing complete_rate ordered n_unique top_counts age_cat 86 0.99 FALSE 8 0-4: 1095, 5-9: 1095, 20-: 1073, 10-: 941 age_cat5 86 0.99 FALSE 17 0-4: 1095, 5-9: 1095, 10-: 941, 15-: 743 Variable type: numeric skim_variable n_missing complete_rate mean sd p0 p25 p50 p75 p100 generation 0 1.00 16.56 5.79 0.00 13.00 16.00 20.00 37.00 age 86 0.99 16.07 12.62 0.00 6.00 13.00 23.00 84.00 age_years 86 0.99 16.02 12.64 0.00 6.00 13.00 23.00 84.00 lon 0 1.00 -13.23 0.02 -13.27 -13.25 -13.23 -13.22 -13.21 lat 0 1.00 8.47 0.01 8.45 8.46 8.47 8.48 8.49 wt_kg 0 1.00 52.64 18.58 -11.00 41.00 54.00 66.00 111.00 ht_cm 0 1.00 124.96 49.52 4.00 91.00 129.00 159.00 295.00 ct_blood 0 1.00 21.21 1.69 16.00 20.00 22.00 22.00 26.00 temp 149 0.97 38.56 0.98 35.20 38.20 38.80 39.20 40.80 bmi 0 1.00 46.89 55.39 -1200.00 24.56 32.12 50.01 1250.00 days_onset_hosp 256 0.96 2.06 2.26 0.00 1.00 1.00 3.00 22.00 Bạn cũng có thể sử dụng hàm
02 từ base R, để lấy thông tin về toàn bộ tập dữ liệu, nhưng kết quả đầu ra có thể khó đọc hơn so với sử dụng skimr. Do đó, kết quả không được hiển thị bên dưới để tiết kiệm không gian trang.
Thống kê tóm tắtBạn có thể sử dụng các hàm base R để trả về thống kê tóm tắt trên một cột dữ liệu dạng số. Bạn có thể trả về hầu hết các thống kê tóm tắt hữu ích cho một cột dạng số bằng cách sử dụng hàm
02, như dưới đây. Lưu ý rằng tên data frame cũng phải được xác định như hình dưới đây.
Bạn có thể truy cập và lưu một phần cụ thể của nó bằng dấu ngoặc vuông [ ]:
`# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `Bạn có thể trả về các thống kê riêng lẻ với các hàm base R như
04,
05,
06,
07,
08,
09, và
10. Xem chương để có danh sách đầy đủ. THẬN TRỌNG: Nếu dữ liệu của bạn chứa các giá trị missing, R muốn bạn biết điều này và do đó sẽ trả về
11 trừ khi bạn chỉ định cho các hàm toán học ở trên mà bạn muốn R bỏ qua các giá trị bị thiếu, thông qua đối số
12. Bạn có thể sử dụng hàm
1 từ package rstatix để trả về thống kê tóm tắt ở định dạng data frame. Điều này có thể hữu ích cho việc thực hiện các hoạt động tiếp theo hoặc vẽ biểu đồ trên các con số. Xem chương để biết thêm chi tiết về package rstatix và các hàm của nó. `linelist %>% get_summary_stats(
janitor packagePackage janitor cung cấp hàm
0 giúp tạo ra các bảng đơn và bảng chéo, có thể được “tô điểm” hoặc sửa đổi bằng các hàm trợ giúp để hiển thị phần trăm, tỷ lệ, số đếm, v.v. Sau đây, chúng ta sẽ pipe
01 data frame tới các hàm của janitor và in kết quả. Nếu muốn, bạn cũng có thể lưu các bảng kết quả bằng toán tử gán
16. tabyl đơn giảnCách sử dụng mặc định của hàm
0 trên một cột cụ thể tạo ra các giá trị duy nhất, số lượng và “phần trăm” (tỷ lệ thực tế) theo cột. Tỷ lệ có thể có nhiều chữ số thập phân. Bạn có thể điều chỉnh số lượng số thập phân với hàm
18 như được mô tả bên dưới.
0
1 Như bạn có thể thấy ở trên, các giá trị missing sẽ được hiển thị trong một hàng có nhãn
19. Bạn có thể ngăn điều này bằng cách thêm
20. Nếu không có giá trị missing, hàng này sẽ không xuất hiện. Nếu có giá trị missing, tất cả các tỷ lệ sẽ được trình bày dưới dạng thô (mẫu số bao gồm cả
11). Nếu giá trị cột là dạng Factor và chỉ một vài level nhất định có trong dữ liệu của bạn, thì tất cả các level sẽ vẫn xuất hiện trong bảng. Bạn có thể loại bỏ tính năng này bằng cách thêm
23. Đọc thêm trong chương . Bảng chéoBảng chéo được tạo bằng cách thêm một hoặc nhiều cột vào hàm
0. Lưu ý rằng bây giờ chỉ có số lượng được hiện thị - tỷ lệ và phần trăm có thể được thêm vào bằng các bước bổ sung sẽ được trình bày bên dưới.
2
3 “Tô điểm” cho tabylSử dụng các hàm “tô điểm” của janitor để thêm tổng hoặc chuyển đổi thành tỷ lệ, phần trăm hoặc điều chỉnh hiển thị. Thông thường, bạn sẽ pipe tabyl thông qua một số hàm này.. Hàm Đầu ra
25 Thêm tổng (
26 “row”, “col”, or “both”). Đặt
27 cho “Tổng”.
28 Chuyển đổi số lượng thành tỷ lệ, với
29 “row”, “col”, hoặc “all”
30 Chuyển đổi tỷ lệ thành tỷ lệ phần trăm. Chỉ rõ
31. Loại bỏ ký hiệu “%” bằng
32.
18 Làm tròn tỷ lệ bằng
31. Để làm tròn tỷ lệ phần trăm, sử dụng hàm
30 với
31.
37 Thêm số lượng vào bảng tỷ lệ hoặc phần trăm. Chỉ định
38 “rear” để hiện thị số lượng trong ngoặc đơn, hoặc “front” để đặt phần trăm vào trong ngoặc đơn.
39 Thêm tiều đề thông qua đối số
40 và/hoặc
41 Hãy cẩn trọng về thứ tự bạn áp dụng các hàm trên. Dưới đây là một số ví dụ. Bảng một chiều đơn giản với phần trăm thay vì tỷ lệ mặc định.
4
5 Bảng chéo với tổng hàng và phần trăm hàng.
6
7 Bảng chéo được điều chỉnh để cả số lượng và phần trăm đều được hiển thị.
8
9 In với tabylTheo mặc định, lệnh tabyl sẽ in kết quả thô vào R console của bạn. Ngoài ra, bạn có thể chuyển tabyl sang flextable hoặc package tương tự để in dưới dạng hình ảnh “đẹp” trong RStudio Viewer, có thể được xuất dưới dạng .png, .jpeg, .html, v.v. Điều này đã được thảo luận trong chương Trình bày bảng . Lưu ý rằng nếu in theo cách này và sử dụng
42, bạn cần thêm vào
43.
0 Age Category/Gender f m NA_ Total 0-4 640 (22.8%) 416 (14.8%) 39 (14.0%) 1095 (18.6%) 5-9 641 (22.8%) 412 (14.7%) 42 (15.1%) 1095 (18.6%) 10-14 518 (18.5%) 383 (13.7%) 40 (14.4%) 941 (16.0%) 15-19 359 (12.8%) 364 (13.0%) 20 (7.2%) 743 (12.6%) 20-29 468 (16.7%) 575 (20.5%) 30 (10.8%) 1073 (18.2%) 30-49 179 (6.4%) 557 (19.9%) 18 (6.5%) 754 (12.8%) 50-69 2 (0.1%) 91 (3.2%) 2 (0.7%) 95 (1.6%) 70+ 0 (0.0%) 5 (0.2%) 1 (0.4%) 6 (0.1%) 0 (0.0%) 0 (0.0%) 86 (30.9%) 86 (1.5%) Sử dụng trên các bảng khácBạn có thể sử dụng các hàm
44 của janitor lên các bảng khác, chẳng hạn các bảng được tạo bởi hàm
2 và
3 của dplyr, hoặc
6 từ base R. Đơn giản chỉ cần pipe bảng đến hàm mong muốn của package janitor. Ví dụ:
1
2 Lưu với tabylNếu bạn muốn chuyển đổi bảng thành một hình ảnh “đẹp” với package flextable, bạn có thể lưu nó bằng các hàm như
48,
49,
50, và
51 từ package flextable (sẽ được bàn luận kỹ hơn ở chương ). Ví dụ dưới đây, bảng được lưu lại dưới dạng tệp Word, và có khả năng chỉnh sửa được.
3 Thống kêBạn có thể áp dụng các kiểm định thống kê bằng tabyls, ví dụ như
52 hoặc
53 từ package stats, như được trình bày dưới đây. Chú ý là giá trị missing không được cho phép vì vậy chúng được loại bỏ khỏi tabyl bằng tùy chọn
20.
4
5 Xem chương để có thêm code và các mẹo liên quan đến thống kê. Các mẹo khác
dplyr packagedplyr là một phần của package tidyverse và là một công cụ quản lý dữ liệu rất phổ biến. Tạo bảng với các hàm của dplyr như
2 và
3 là một cách tiếp cận hữu ích để tính toán các tóm tắt thống kê, tổng hợp theo nhóm, hoặc chuyển bảng tới
4.
2 tạo một data frame tổng hợp mới. Nếu dữ liệu được tách nhóm, nó sẽ trả về data frame có một hàng với thống kê tóm tắt được chỉ định cho toàn bộ data frame. Nếu dữ liệu được nhóm lại, data frames sẽ có một hàng cho từng nhóm (xem chương ). Bên trong dấu ngoặc đơn của hàm
2, bạn sẽ cung cấp tên của từng cột cần tổng hợp mới, theo sau là dấu bằng và một hàm thống kê để áp dụng. MẸO: Hàm summarise hoạt động được với cả cách viết Anh-Anh và Anh-Mỹ (
2 và
66). Lấy số lượngHàm đơn giản nhất để áp dụng cùng với hàm
2 là
68. Để trống dấu ngoặc đơn để đếm số hàng.
6
7 Điều này sẽ thú vị hơn nếu chúng ta đã nhóm dữ liệu trước đó.
8
9 Lệnh trên có thể được rút ngắn bằng cách sử dụng hàm
3 thay thế.
3 làm những việc sau:
0
1 Bạn có thể thay đổi tên của cột đếm từ mặc định là
72 thành một cái gì đó cụ thể chẳng hạn như
27. Tạo bảng đếm cho hai hoặc nhiều cột sẽ vẫn trả về địng dạng “dọc”, với số lượng ở cột
72. Xem chương [Pivoting dữ liệu] để hiểu thêm về định dạng dữ liệu “dọc” và “ngang”.
2
3 Hiện tất cả các cấp độNếu bạn tạo bảng cho một cột có kiểu dữ liệu là factor, bạn có thể chắc chắng rằng tất cả các cấp độ được trình bày (không chỉ các cấp có giá trị trong dữ liệu) bằng cách thêm
76 vào lệnh
2 hoặc
3. Kỹ thuật này rất hữu ích để chuẩn hóa các bảng/biểu đồ của bạn. Ví dụ: nếu bạn đang tạo số liệu cho nhiều nhóm con, hoặc liên tục tạo số liệu cho các báo cáo thường quy. Trong các trường hợp này, sự hiện diện của các giá trị trong dữ liệu có thể dao động, nhưng bạn có thể xác định các mức không đổi. Xem chương để có nhiều thông tin hơn. Tỷ lệTỷ lệ có thể được thêm vào bằng cách piping bảng tới hàm
79 để tạo một cột mới. Định nghĩa cột mới là thương của số quan sát của từng yếu tố (mặc định là
81 của cột (sẽ trả về giá trị là một tỷ lệ). Lưu ý trong trường hợp này,
81 trong lệnh
79 sẽ trả về giá trị của toàn bộ cột
72 để dùng làm mẫu số của tỷ lệ. Như đã được giải thích , nếu
81 được sử dụng với dữ liệu đã được nhóm (vd: nếu hàm
79 được theo ngay phía sai hàm
87), nó sẽ trả về kết quả tổng hợp theo nhóm. Như đã nếu ở trên,
3 hoàn thành nhiệm vụ của mình bằng cách tách nhóm. Vì vậy, trong trường hợp này chúng ta sẽ lấy toàn bộ tỷ lệ của cột. Để dễ dàng hiển thị phần trăm, bạn có thể đưa tỷ lệ vào trong hàm
89 từ package scales (lưu ý là điều nãy sẽ chuyển kết quả thành dạng ký tự (character)).
4
5 Dưới đây là phương pháp tính tỷ lệ trong nhóm. Nó dựa trên các cấp độ nhóm dữ liệu khác nhau được áp dụng và loại bỏ một cách có chọn lọc. Đầu tiên, dữ liệu được nhóm theo
90 thông qua hàm
87. Sau đó, hàm
3 được áp dụng. Hàm này sẽ tiếp tục nhóm dữ liệu phân theo
93 và trả vế số lượng theo từng tổ hợp
90-
95. Quan trọng là - khi nó kết thúc quy trình của mình, hàm
3 sẽ tách nhóm theo
93, nên nhóm dữ liệu duy nhất còn lại là nhóm ban đầu theo
90. Do đó, bước cuối cùng để tính toán tỷ lệ (mẫu số là
90.
6 Vẽ biểu đồĐể hiển thị kết quả từ một bảng “dài” như trên thì vẽ biểu đồ bằng hàm
4 tương đối trực quan. Dữ liệu một cách tự nhiên có định dạng “dọc”, nên tương thích với
4 một cách tự nhiên. Xem thêm các ví dụ ở chương và .
7 Tổng hợp thống kêMột điểm mạnh của dplyr và
2 là khả năng trả về các bảng tổng hợp thống kê nâng cao hơn như
06,
07,
04,
05,
09 (độ lệch chuẩn), và phân vị. Bạn cũng có thể sử dụng
81 để trả vể số lượng dòng thỏa mãn một điều kiện logic nào đó. Như trên, các kết quả đầu ra này có thể được tạo cho toàn bộ data frame hoặc theo nhóm. Cú pháp là tương tự- bên trong dấu ngoặc hàm
2 bạn cung cấp tên của từng cột tổng hợp được theo sau bởi dâu bằng và hàm thống kê được áp dụng. Trong hàm thống kê, cung cấp (các) cột sẽ được tính toán và bất kỳ các đối số có liên quan (vd:
12 cho tất cả các hàm toán học). Bạn cũng có thể sử dụng hàm
81 để trả vể số lượng dòng thỏa mãn một điều kiện logic cụ thể. Biểu thức điều kiện sẽ được đếm nếu nó được đánh giá là
13. Ví dụ:
Dưới đây, bộ dữ liệu
01 được tổng hợp để mô tả những ngày trì hoãn từ khi bắt đầu có triệu chứng đến khi nhập viện (cột
18), phân theo bệnh viện.
8
9 Một vài mẹp:
Thống kê có điều kiệnBạn có thể sẽ muốn trả về các thống kê có điều kiện - vd: số hàng tối đa đáp ứng các tiêu chí nhất định. Điều này có thể thực hiện được bằng cáhc subsetting cột bằng dấu ngoặc vuông
30. Ví dụ dưới đây trả về nhiệt độ tối đa cho những bệnh nhân được phân loại là có hoặc không bị sốt. Tuy nhiên hãy lưu ý - có thể thích hợp hơn nếu thêm một cột khác vào hàm
87 và
32 (như được minh họa ).
0
1 Gắn với nhauHàm
33 từ package stringr rất hữu ích để kết hợp các giá trị từ một số cột thành một cột mới. Trong trường hợp này nó được sử dụng sau hàm
2. Trong chương , có nhiều lựa chọn khác nhau để kết hợp các cột được thảo luận, bao gồm cả
35, và
36. Trong trường hợp sử dụng này, chúng tôi ủng hộ
33 bởi vì nó linh hoạt hơn
35 và có cú pháp đơn giẩn hơn
36. Dưới đây, data frame
40 (được tạo bên trên) được biến đổi để kết hợp cột
41 và
42, định dạng dấu ngoặc đơn được thêm vào cột mới, và các cột cũ tương ứng của chúng bị xóa. Sau đó, để làm cho bảng dễ nhìn hơn, tổng hàng được thêm vào bằng hàm
25 từ janitor (bỏ qua các cột không phải số). Cuối cùng, chúng tôi sử dụng hàm
29 từ dplyr để sắp xếp và đặt tên lại cho các cột. Bây giờ bạn có thể chuyển kết quả tới flextable và in chúng thành bảng trong Word, .png, .jpeg, .html, Powerpoint, RMarkdown, v.v.! (xem chương ).
2
3 Bách phân vịBách phân vị và tứ phân vị trong dplyr xứng đáng được đề cập tới. Để trả về tứ phân vị, sử dụng
08 với các giá trị mặc định hoặc chỉ rõ giá trị bạn muốn bằng đối số
46.
4
5
6
7 Nếu bạn muốn trả về phân vị theo nhóm, bạn có thể gặp phải các kết quả đầu ra dài và ít hữu ích hơn nếu bạn chỉ cần thêm cột vào
87. Thay vào đó, hãy thử cách tiếp cận này - tạo một cột cho mỗi mức phân vị mong muốn.
8
9 Mặc dù dplyr
2 chắc chắn cung cấp khả năng kiểm soát tốt hơn, bạn có thể thấy rằng tất cả các thống kê tổng hợp mà bạn cần có thể được tạo ra với hàm
49 từ package rstatix. Nếu thực hiện trên dữ liệu đã được nhóm, nó sẽ trả về các phân vị 0%, 25%, 50%, 75%, và 100%. If applied to ungrouped data, you can specify the percentiles with
50.
0
1
2
3
4 Tóm tắt dữ liệu tổng hợpNếu bạn bắt đầu với dữ liệu tổng hợp (aggregated data), sử dụng
68 để trả về số lượng các dòng, không phải là tổng của các số lượng được đếm. Để lấy tổng, sử dụng
81 trên cột của dữ liệu đếm. Ví dụ, giả sử bạn đang bắt đầu với data frame đếm số lượng như bên dưới, gọi là
53 - nó hiển thị ở định dạng “dọc”, các trường hợp được tính theo outcome và giới tính. Sau đây chúng ta sẽ tạo data frame minh hoạt số trường hợp của
01 được đếm theo outcome và gender (các giá trị missing được loại bỏ để rõ ràng).
5
6 Để tính tổng số lượng (trong cột
2 nhưng đặt cột mới bằng
57. Để thêm phần tử điều kiện vào phép toán tổng, bạn có thể sử dụng cú pháp dấu ngoặc vuông tập hợp con [ ] trên cột đếm.
7
8
58 trên nhiều cột Bạn có thể sử dụng
2 trên nhiều cột bằng hàm
58. Điều này làm cho mọi thứ dễ dàng hơn khi bạn muốn tính toán các thống kê giống nhau cho nhiều cột. Đặt
58 bên trong
2 và chỉ rõ những điều sau:
Ví dụ dưới đây,
07 được áp dụng cho các cột dữ liệu dạng số. Một vectơ tên của các cột được gán cho
63 và hàm duy nhất
69 được xác định (không có dấu ngoặc) cho
65. Bất kỳ đối số bổ sung nào cho hàm (vd:
65, ngăn cách bởi dấu phẩy. Có thể khó để hiểu được thứ tự của dấu ngoặc đơn và dấu phẩy chính xác khi sử dụng
58. Hãy nhớ là bên trong hàm
58 bạn phải bao gồm các cột, các hàm, và tất cả những đối số cần thiết cho các hàm.
9
0 Nhiều hàm có thể được chạy cùng một lúc. Dưới đây hàm
69 và
76 được cung cấp cho
65 bên trong một
66. Bạn có cơ hội cung cấp tên ký tự (vd: “mean” và “sd”) để thêm vào tên các cột mới.
1
2 Dưới đây là danh sách các hàm trợ giúp “tidyselect” bạn có thể cung cấp cho
63 để lựa chọn cột:
Ví dụ, để trả về giá trị trung bình của tất cả các cột dạng số, sử dụng
82 và thêm vào hàm
95 (không có dấu ngoặc). Tất cả những thứ này vẫn được đặt trong hàm
58.
3
4 Xoay trục ngang (Pivot wider)Nếu bạn thích bảng của mình ở định dạng “rộng”, bạn có thể biến đổi nó sử dụng hàm tidyr
32. Bạn có thể sẽ cần đặt lại tên cho các cột bằng
98. Để tìm hiểu thêm, vui lòng xem chương [Pivoting dữ liệu]. Ví dụ sau đây bắt đầu bằng một bảng “dài”
99 từ mục . Để dễ hình dung, chúng ta tạo lại bảng và in ra:
6 Để xoay trục ngang, chúng ta tạo các cột mới từ các giá trị trong cột hiện có
93 (bằng cách đặt
01). Chúng ta cũng chỉ định rằng các giá trị bảng mới sẽ đến từ cột hiện có
72, với
03. Các cột không được đề cập trong lệnh pivoting (
6
7 Tổng các hàngKhi hàm
2 vận hành trên dữ liệu đã được nhóm, nó không tính “tổng” một cách tự động. Sau đây là hai cách tiếp cận giúp bạn thêm tổng hàng: janitor’s
25 Nếu bảng của bạn chỉ chứa duy nhất số lượng hoặc tỷ lệ/tỷ lệ phần trăm có thể được tổng hợp thành một tổng, thì bạn có thể tính tổng sử dụng hàm
25 của package janitor như đã được mô tả bên trên. Lưu ý là hàm này chỉ có thể tính tổng của các cột định dạng là số - nếu bạn muốn tính các loại tổng khác, vui lòng xem cách tiếp cận tiếp theo bằng dplyr. Dưới đây, bộ dữ liệu
01 được nhóm theo giới và tóm tắt thành một bảng mô tả số trường hợp có outcome đã biết, tử vong và phục hồi. Piping bảng tới hàm
25 để thêm tổng các hàng ở hàng dưới cùng thể hiện giá trị tổng của từng cột. Các hàm
44 khác điều chỉnh cách kết quả được hiển thị như được comment trong phần code.
8
9
2 trên dữ liệu “tổng” rồi sau đó
12 Nếu bảng của bạn chứa các phép tính thống kế chẳng hạn như
06,
07, v.v, thì cách tiếp cận dùng hàm
25 bên trên sẽ không đủ. Thay vào đó, để có được thống kê tóm tắt cho toàn bộ tập dữ liệu, bạn phải tính toán chúng bằng lệnh
2 một cách độc lập sau đó gắn các kết quả này với bảng tổng hợp theo nhóm ban đầu. Để làm điều này, bạn có thể sử dụng hàm
12 từ dplyr như được mô tả trong chương . Dưới đây là một ví dụ: Bạn có thể tạo bảng tổng hợp của outcome theo bệnh viện với
87 và
2 như sau: `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `0 `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `1 Để tính tổng, vẫn sử dụng hàm
2 nhưng chỉ nhóm dữ liệu theo outcome (không theo bệnh viện), như dưới đây: `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `2 `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `3 Bây giờ chúng ta có thể nối hai data frames này lại với nhau. Lưu ý là bảng
21 có 4 cột trong khi đó bảng kết quả
22 có 3 cột. Bằng việc sử dụng
12, các cột được kết hợp theo tên, và bất kỳ khoảng trống nào sẽ được điền vào bằng giá trị
11 (ví dụ ở cột
25 là các giá trị cho hai hàng
22 mới). Sau khi gắn các hàng, chúng ta chuyển các khoảng trống đó thành “Tổng” bằng cách sử dụng
27 (xem chương ). `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `4 Đây là bảng mới với các hàng “Tổng” ở các hàng dưới cùng của bảng. Bảng này đang có định dạng “dài”, có thể là những gì bạn muốn. Tuy nhiên, bạn có thể xoay bảng này rộng hơn theo chiều ngang để dễ đọc. Xem thêm ở phần Xoay trục ngang (Pivot wider) bên trên, và chương . Bạn cũng có thêm nhiều cột nữa, và sắp xếp chúng một cách đẹp mắt. Phần code được trình bày bên dưới. `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `5 `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `6 Tiếp đó bạn có thể in bảng kết quả dưới dạng một bức ảnh đẹp - sau đây là output được in bằng flextable. Bạn có thể đọc chuyên sâu hơn về ví dụ này và cách tạo được bảng “đẹp” tương tự thế này trong chương . Hospital Total cases with known outcome Recovered Died Total % of cases Median CT values Total % of cases Median CT values St. Mark's Maternity Hospital (SMMH) 325 126 38.8% 22 199 61.2% 22 Central Hospital 358 165 46.1% 22 193 53.9% 22 Other 685 290 42.3% 21 395 57.7% 22 Military Hospital 708 309 43.6% 22 399 56.4% 21 Missing 1,125 514 45.7% 21 611 54.3% 21 Port Hospital 1,364 579 42.4% 21 785 57.6% 22 Total 3,440 1,469 42.7% 22 1,971 57.3% 22 gtsummary packageNếu bạn muốn in các thống kê tóm tắt của mình dưới dạng đồ họa đẹp mắt, sẵn sàng xuất bản, bạn có thể sử dụng package gtsummary và hàm của nó
5. Phần code ban đầu có thể trông phức tạp một chút, nhưng kết quả đầu ra trông rất đẹp và in ra Viewer panel của RStudio dưới dạng một ảnh HTML. Đọc bản tóm tắt ở đây. Bạn cũng có thể thêm kết quả của các kiểm định thống kê vào các bảng của gtsummary. Quy trình này được trình bày ở mục gtsummary trong chương . Để giới thiệu về
5, trước tiên chúng ta sẽ chỉ ra các quy trình cơ bản nhất, giúp bạn thực sự tạo ra một bảng lớn và đẹp. Sau đó, chúng ta sẽ tìm hiểu chi tiết hơn về cách thực hiện các điều chỉnh và các bảng được thiết kế sẵn. Bảng tổng hợpCách làm việc mặc định của
5 khá kinh ngạc - nó lấy các cột bạn cung cấp và tạo một bảng tóm tắt chỉ trong một lệnh. Hàm in ra số liệu thống kê phù hợp với lớp cột: trung vị và khoảng tứ phân vị (IQR) cho các cột số, và số lượng (%) cho các cột danh mục. Giá trị missing được chuyển đổi thành “Unknown”. Chú thích được thêm vào cuối bảng để giải thích các phép tính thống kê, trong khi tổng N được hiển thị ở trên cùng. `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `7 Characteristic N = 5,8881 age_years 13 (6, 23) Unknown 86 gender f 2,807 (50%) m 2,803 (50%) Unknown 278 outcome Death 2,582 (57%) Recover 1,983 (43%) Unknown 1,323 fever 4,549 (81%) Unknown 249 temp 38.80 (38.20, 39.20) Unknown 149 hospital Central Hospital 454 (7.7%) Military Hospital 896 (15%) Missing 1,469 (25%) Other 885 (15%) Port Hospital 1,762 (30%) St. Mark's Maternity Hospital (SMMH) 422 (7.2%) 1 Median (IQR); n (%) Các điều chỉnhBây giờ chúng tôi sẽ giải thích cách hoạt động của hàm và cách điều chỉnh. Các đối số chính được trình bày chi tiết bên dưới:
31 Bạn có thể phân tầng bảng của mình theo một cột (ví dụ theo
90), để tạo thành bảng 2 chiều.
33 Sử dụng phương trình để chỉ định thống kê nào sẽ được hiển thị và cách hiển thị chúng. Có hai vế của phương trình, được ngăn cách bởi dấu
34. Ở vế phải, trong dấu ngoặc kép, là hiển thị phép toán thống kê mong muốn, và ở vế trái là các cột mà phép thống kê đó sẽ áp dụng.
Một ví dụ đơn giản về phương trình
33 có thể tham khảo ở bên dưới, để chỉ in giá trị trung bình của cột
44: `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `8 Characteristic N = 5,8881 age_years 16 Unknown 86 1 Mean Một phương trình phức tạp hơn một chút có thể như
45, kết hợp các giá trị max và min trong dấu ngoặc đơn và được phân tách bằng dấu phẩy: `# equivalent, alternative to above by element name summary(linelist$age_years)[["1st Qu."]] `9 Characteristic N = 5,8881 age_years (0, 84) Unknown 86 1 (Range) Bạn cũng có thể phân biệt cú pháp cho các cột hoặc loại cột riêng biệt. Trong ví dụ phức tạp hơn bên dưới, giá trị được cung cấp cho
46 là một danh sách chỉ ra rằng đối với tất cả các cột dạng số thì bảng sẽ in ra giá trị trung bình và độ lệch chuẩn bên trong ngoặc, trong khi các cột dạng danh sách thì sẽ in ra n, mẫu số, và phần trăm.
31 Điều chỉnh các chữ số và làm tròn. Theo tùy chọn, điều này có thể được chỉ định chỉ dành cho các cột dạng số liên tục (như bên dưới).
48 Điều chỉnh cách hiển thị tên cột. Cung cấp tên cột và nhãn mong muốn của nó được phân tách bằng dấu ngã. Theo mặc định thì tên cột được hiển thị.
49 Điều chỉnh cách giá trị missing được hiển thị. Mặc định hiển thị là “Unknown”.
50 Sử dụng để điều chỉnh số lượng cấp độ của thống kê được hiển thị Cú pháp tương tự như
33 trong đó bạn cung cấp một phương trình với các cột ở bên trái và một giá trị ở bên phải. Hai trường hợp phổ biến bao gồm:
Trong ví dụ dưới đây, mỗi đối số này được sử dụng để điều chỉnh bảng ban đầu: `linelist %>% get_summary_stats(
0`linelist %>% get_summary_stats(
1Characteristic Death, N = 2,5821 Recover, N = 1,9831 Age (years) 15.9 (12.3) 16.1 (13.0) Missing 32 28 Gender f 1,227 / 2,455 (50%) 953 / 1,903 (50%) m 1,228 / 2,455 (50%) 950 / 1,903 (50%) Missing 127 80 fever no 458 / 2,460 (19%) 361 / 1,904 (19%) yes 2,002 / 2,460 (81%) 1,543 / 1,904 (81%) Missing 122 79 Temperature 38.6 (1.0) 38.6 (1.0) Missing 60 55 Hospital Central Hospital 193 / 2,582 (7.5%) 165 / 1,983 (8.3%) Military Hospital 399 / 2,582 (15%) 309 / 1,983 (16%) Missing 611 / 2,582 (24%) 514 / 1,983 (26%) Other 395 / 2,582 (15%) 290 / 1,983 (15%) Port Hospital 785 / 2,582 (30%) 579 / 1,983 (29%) St. Mark's Maternity Hospital (SMMH) 199 / 2,582 (7.7%) 126 / 1,983 (6.4%) 1 Mean (SD); n / N (%) Thống kê nhiều dòng cho các biến liên tụcNếu bạn muốn in nhiều dòng thống kê cho các biến liên tục, bạn có thể thiết lập
50 thành “continuous2”. Bạn có thể kết hợp tất cả các yếu tố được hiển thị trước đó trong một bảng bằng cách chọn thống kê bạn muốn hiển thị. Để làm điều này, bạn cần cho hàm biết rằng bạn muốn khôi phục bảng bằng cách nhập type là “continuous2”. Số lượng các giá trị missing được hiển thị là “Unknown”. `linelist %>% get_summary_stats(
2Characteristic 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
36 trong cửa sổ Console), và một số được đề cập trong chương . base RBạn có thể sử dụng hàm
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ị
11 (missing) sẽ không sẽ không được lập bảng trừ khi bạn bao gồm đối số
59 (cũng có thể được đặt thành “no” hoặc “ifany”). MẸO: Bạn có thể sử dụng
60 từ package magrittr để loại bỏ việc lặp lại các data frame trong các hàm base. Chẳng hạn, ví dụ bên dưới có thể được viết lại thành
61 `linelist %>% get_summary_stats(
3`linelist %>% get_summary_stats(
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ư
62. `linelist %>% get_summary_stats(
5`linelist %>% get_summary_stats(
6Tỷ lệĐể trả về tỷ lệ, hãy chuyển bảng trên vào hàm
63. Sử dụng đối số
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
26 của base R, chỉ định 2 chữ số sau dấu phẩy. `linelist %>% get_summary_stats(
7`linelist %>% get_summary_stats(
8 TổngĐể thêm tổng hàng và tổng cột, hãy chuyển bảng vào hàm
66. Cách này hoạt động cho cả số lượng và tỷ lệ. `linelist %>% get_summary_stats(
9 Chuyển đổi thành data frameChuyển đổi trực tiếp một đối tượng dạng
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: |