如何使用我的特定模式在 R 中创建表?
how to create tables in R with my specific pattern?
我试图节省时间获取 table 如下例所示,但在 R 中没有我自己从 R 应对和粘贴到 word
我想要转换成与上图类似的数据的特定类型就在这里:
test_data <- structure(list(age_band = structure(c(3L, 3L, 3L, 2L, 1L, 2L,
2L, 1L, 1L, 3L), .Label = c("20-39", "40-59", "60+"), class = "factor"),
tested = c("positive", "positive", "showing symptoms",
"positive", "positive", "positive", "showing symptoms", "positive",
"positive", "showing symptoms"), comorbidities = structure(c(5L,
9L, 5L, 5L, 9L, 1L, 5L, 1L, 5L, 3L), .Label = c("asthma",
"diabetes_type_one", "diabetes_type_two", "heart_disease",
"hypertension", "kidney_disease", "liver_disease", "lung_condition",
"obesity"), class = "factor"), count = c(1L, 1L, 37L, 5L,
10L, 4L, 234L, 6L, 5L, 12L), percentage = c(50, 50, 45.7,
38.5, 35.7, 30.8, 30, 21.4, 17.9, 14.8)), row.names = c(NA,
-10L), groups = structure(list(age_band = structure(c(1L, 1L,
1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("20-39", "40-59",
"60+"), class = "factor"), tested = c("positive", "positive",
"positive", "positive", "positive", "showing symptoms", "positive",
"positive", "showing symptoms", "showing symptoms"), comorbidities = structure(c(1L,
5L, 9L, 1L, 5L, 5L, 5L, 9L, 3L, 5L), .Label = c("asthma", "diabetes_type_one",
"diabetes_type_two", "heart_disease", "hypertension", "kidney_disease",
"liver_disease", "lung_condition", "obesity"), class = "factor"),
.rows = structure(list(8L, 9L, 5L, 6L, 4L, 7L, 1L, 2L, 10L,
3L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr",
"list"))), row.names = c(NA, 10L), class = c("tbl_df", "tbl",
"data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df",
"tbl", "data.frame"))
根据我的具体数据 - 我想要年龄段 20-39; 40-59 and 60+
就像上面 table 中的 2015; 2016; 2017
一样,在每个年龄组下面我想要 tested and showing symptoms
类别就像write
和 pass rate
对于按字母顺序排列的每个合并症 - asthma, cough, chills etc
(应该作为行出现在旁边 - 就像 'Ontario RN university program collaborative partner, and language instruction'
一样)。我希望保留计数和百分比。
这在 R 中可行吗?我有 Kable,但它不是我想要的那样。一定有类似的吧?
======更新问题====
如果 gt 库可以做到这一点,请告诉我?干杯!
您可以使用 tables
package:
library(tables)
tables::tabular((comorbidities = factor(comorbidities)+1)*((n=1)+Percent("col"))~(age_band=factor(age_band))*(tested=factor(tested)), data=test_data)
tested tested tested
comorbidities positive showing symptoms positive showing symptoms positive showing symptoms
asthma n 1.00 0 1 0 0 0
Percent 33.33 NaN 50 0 0 0
diabetes_type_two n 0.00 0 0 0 0 1
Percent 0.00 NaN 0 0 0 50
hypertension n 1.00 0 1 1 1 1
Percent 33.33 NaN 50 100 50 50
obesity n 1.00 0 0 0 1 0
Percent 33.33 NaN 0 0 50 0
All n 3.00 0 2 1 2 2
Percent 100.00 NaN 100 100 100 100
然后您可以将结果导出为您喜欢的格式,例如 toHTML
:
我试图节省时间获取 table 如下例所示,但在 R 中没有我自己从 R 应对和粘贴到 word
我想要转换成与上图类似的数据的特定类型就在这里:
test_data <- structure(list(age_band = structure(c(3L, 3L, 3L, 2L, 1L, 2L,
2L, 1L, 1L, 3L), .Label = c("20-39", "40-59", "60+"), class = "factor"),
tested = c("positive", "positive", "showing symptoms",
"positive", "positive", "positive", "showing symptoms", "positive",
"positive", "showing symptoms"), comorbidities = structure(c(5L,
9L, 5L, 5L, 9L, 1L, 5L, 1L, 5L, 3L), .Label = c("asthma",
"diabetes_type_one", "diabetes_type_two", "heart_disease",
"hypertension", "kidney_disease", "liver_disease", "lung_condition",
"obesity"), class = "factor"), count = c(1L, 1L, 37L, 5L,
10L, 4L, 234L, 6L, 5L, 12L), percentage = c(50, 50, 45.7,
38.5, 35.7, 30.8, 30, 21.4, 17.9, 14.8)), row.names = c(NA,
-10L), groups = structure(list(age_band = structure(c(1L, 1L,
1L, 2L, 2L, 2L, 3L, 3L, 3L, 3L), .Label = c("20-39", "40-59",
"60+"), class = "factor"), tested = c("positive", "positive",
"positive", "positive", "positive", "showing symptoms", "positive",
"positive", "showing symptoms", "showing symptoms"), comorbidities = structure(c(1L,
5L, 9L, 1L, 5L, 5L, 5L, 9L, 3L, 5L), .Label = c("asthma", "diabetes_type_one",
"diabetes_type_two", "heart_disease", "hypertension", "kidney_disease",
"liver_disease", "lung_condition", "obesity"), class = "factor"),
.rows = structure(list(8L, 9L, 5L, 6L, 4L, 7L, 1L, 2L, 10L,
3L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr",
"list"))), row.names = c(NA, 10L), class = c("tbl_df", "tbl",
"data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df",
"tbl", "data.frame"))
根据我的具体数据 - 我想要年龄段 20-39; 40-59 and 60+
就像上面 table 中的 2015; 2016; 2017
一样,在每个年龄组下面我想要 tested and showing symptoms
类别就像write
和 pass rate
对于按字母顺序排列的每个合并症 - asthma, cough, chills etc
(应该作为行出现在旁边 - 就像 'Ontario RN university program collaborative partner, and language instruction'
一样)。我希望保留计数和百分比。
这在 R 中可行吗?我有 Kable,但它不是我想要的那样。一定有类似的吧?
======更新问题====
如果 gt 库可以做到这一点,请告诉我?干杯!
您可以使用 tables
package:
library(tables)
tables::tabular((comorbidities = factor(comorbidities)+1)*((n=1)+Percent("col"))~(age_band=factor(age_band))*(tested=factor(tested)), data=test_data)
tested tested tested
comorbidities positive showing symptoms positive showing symptoms positive showing symptoms
asthma n 1.00 0 1 0 0 0
Percent 33.33 NaN 50 0 0 0
diabetes_type_two n 0.00 0 0 0 0 1
Percent 0.00 NaN 0 0 0 50
hypertension n 1.00 0 1 1 1 1
Percent 33.33 NaN 50 100 50 50
obesity n 1.00 0 0 0 1 0
Percent 33.33 NaN 0 0 50 0
All n 3.00 0 2 1 2 2
Percent 100.00 NaN 100 100 100 100
然后您可以将结果导出为您喜欢的格式,例如 toHTML
: