как создавать таблицы в R с моим конкретным шаблоном?

#r #datatables #kable #gt

#r #таблицы данных #kable #gt

Вопрос:

Я пытаюсь сэкономить время на получение таблицы, как в приведенном ниже примере, но в 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 , как 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, пожалуйста, дайте мне знать? Приветствия!

Ответ №1:

Вы могли бы использовать 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 :
введите описание изображения здесь

Комментарии:

1. возможно ли это с помощью RMarkdown?

2. Да, либо как Latex, либо как HMTL, см. Стр. 43 связанной виньетки .

3. Я получаю сообщение об ошибке: «Ошибка в процентах («col»): не удалось найти функцию «Процент» »

4. удивительно, но я снова протестировал reprex , и он работает на моем компьютере. Вы загрузились tables ? Кроме того, мой код использует Percent , поэтому я не до конца понимаю ошибку Percentage .

5. потому что в моей реальной таблице это процент. Хм, я также загрузил библиотеку таблиц