class: center, middle, inverse, title-slide <style type="text/css"> .remark-slide table{ border: none } .remark-slide-table { } tr:first-child { border-top: none; } tr:last-child { border-bottom: none; } </style> <style type="text/css"> /* THIS IS A CSS CHUNK - THIS IS A COMMENT */ /* Size of font in code echo. E.g. 10px or 50% */ .remark-code { font-size: 70%; } /* Size of font in text */ .medium-text { font-size: 75%; } /* Size of font in tables */ .small-table table { font-size: 6px; } .medium-table table { font-size: 8px; } .medium-large-table table { font-size: 10px; } </style> # Introducción a R para la epidemiología aplicada ### Agrupar datos [contact@appliedepi.org](mailto:contact@appliedepi.org) --- # Agrupar datos <img src="../../images/grouping/Grouping_1500x500.png" width="100%" /> --- # Objetivos y orden del día - Practicar el uso de {janitor} para crear rápidamente tablas simples - Practica utilizando {dplyr} para resumir datos con versatilidad - Practica el uso de {gtsummary} para hacer tablas listas para publicar - Haz tablas de calidad de impresión y exporta como PNG, Word, etc. <div class="tabwid"><style>.cl-dc4c8280{}.cl-dc48c884{font-family:'Helvetica';font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-dc4a5528{margin:0;text-align:left;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-dc4a6626{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a663a{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a663b{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a6644{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a664e{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a6658{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a6662{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a666c{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a6680{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a668a{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a6694{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a66b2{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a66b3{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(255, 255, 255, 0.00);border-top: 0 solid rgba(255, 255, 255, 0.00);border-left: 0 solid rgba(255, 255, 255, 0.00);border-right: 0 solid rgba(255, 255, 255, 0.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc4a66bc{width:3.292in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(255, 255, 255, 0.00);border-top: 0 solid rgba(255, 255, 255, 0.00);border-left: 0 solid rgba(255, 255, 255, 0.00);border-right: 0 solid rgba(255, 255, 255, 0.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}</style><table data-quarto-disable-processing='true' class='cl-dc4c8280'><thead><tr style="overflow-wrap:break-word;"><th class="cl-dc4a6626"><p class="cl-dc4a5528"><span class="cl-dc48c884">Tiempo</span></p></th><th class="cl-dc4a663a"><p class="cl-dc4a5528"><span class="cl-dc48c884">Tema</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-dc4a663b"><p class="cl-dc4a5528"><span class="cl-dc48c884">15 minutes</span></p></td><td class="cl-dc4a6644"><p class="cl-dc4a5528"><span class="cl-dc48c884">Revisión del módulo anterior</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc4a664e"><p class="cl-dc4a5528"><span class="cl-dc48c884">30 minutes</span></p></td><td class="cl-dc4a6658"><p class="cl-dc4a5528"><span class="cl-dc48c884">Abordaje al resumen y agrupaiento de datos</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc4a6662"><p class="cl-dc4a5528"><span class="cl-dc48c884">45 minutes</span></p></td><td class="cl-dc4a666c"><p class="cl-dc4a5528"><span class="cl-dc48c884">Demostración y ejercicios: janitor</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc4a6662"><p class="cl-dc4a5528"><span class="cl-dc48c884">45 minutes</span></p></td><td class="cl-dc4a666c"><p class="cl-dc4a5528"><span class="cl-dc48c884">Demostración y ejercicios: dplyr</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc4a6680"><p class="cl-dc4a5528"><span class="cl-dc48c884">45 minutes</span></p></td><td class="cl-dc4a668a"><p class="cl-dc4a5528"><span class="cl-dc48c884">Demostración y ejercicios: gtsummary</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc4a6694"><p class="cl-dc4a5528"><span class="cl-dc48c884">30 minutes</span></p></td><td class="cl-dc4a66b2"><p class="cl-dc4a5528"><span class="cl-dc48c884">Plenaria y demostración de flextable</span></p></td></tr></tbody><tfoot><tr style="overflow-wrap:break-word;"><td colspan="2"class="cl-dc4a66b3"><p class="cl-dc4a5528"><span class="cl-dc48c884">Toma los descansos que necesites durante los ejercicios</span></p></td></tr></tfoot></table></div> ??? Ten en cuenta las pausas de estiramiento. --- class: inverse, center, middle ## {janitor} - velocidad ## {tidyverse} - flexibilidad ## {gtsummary} - estetica --- class: inverse, center, middle ## {janitor} - velocidad <img src="../../images/grouping/simple_table.png" width="65%" /> --- # `tabyl()` .pull-left[ ``` r vig %>% * tabyl(distrito) ``` ] -- .pull-right[ ``` ## distrito n percent valid_percent ## Central I 33 0.051886792 0.05205047 ## Central II 42 0.066037736 0.06624606 ## East I 28 0.044025157 0.04416404 ## East II 76 0.119496855 0.11987382 ## East III 11 0.017295597 0.01735016 ## Mountain Rural 197 0.309748428 0.31072555 ## West I 15 0.023584906 0.02365931 ## West II 120 0.188679245 0.18927445 ## West III 112 0.176100629 0.17665615 ## <NA> 2 0.003144654 NA ``` ] --- # Funciones `adorn_()` .pull-left[ ``` r vig %>% tabyl(distrito) %>% * adorn_totals() ``` ] .pull-right[ ``` ## distrito n percent valid_percent ## Central I 33 0.051886792 0.05205047 ## Central II 42 0.066037736 0.06624606 ## East I 28 0.044025157 0.04416404 ## East II 76 0.119496855 0.11987382 ## East III 11 0.017295597 0.01735016 ## Mountain Rural 197 0.309748428 0.31072555 ## West I 15 0.023584906 0.02365931 ## West II 120 0.188679245 0.18927445 ## West III 112 0.176100629 0.17665615 ## <NA> 2 0.003144654 NA ## Total 636 1.000000000 1.00000000 ``` ] --- # Funciones `adorn_()` .pull-left[ ``` r vig %>% tabyl(distrito) %>% adorn_totals() %>% * adorn_pct_formatting() ``` ] .pull-right[ ``` ## distrito n percent valid_percent ## Central I 33 5.2% 5.2% ## Central II 42 6.6% 6.6% ## East I 28 4.4% 4.4% ## East II 76 11.9% 12.0% ## East III 11 1.7% 1.7% ## Mountain Rural 197 31.0% 31.1% ## West I 15 2.4% 2.4% ## West II 120 18.9% 18.9% ## West III 112 17.6% 17.7% ## <NA> 2 0.3% - ## Total 636 100.0% 100.0% ``` ] --- # `tabyl()` tablas cruzadas .pull-left[ ``` r vig %>% * tabyl(distrito, sexo) ``` ] -- .pull-right[ ``` ## distrito hombre mujer NA_ ## Central I 14 18 1 ## Central II 22 19 1 ## East I 15 11 2 ## East II 38 37 1 ## East III 6 4 1 ## Mountain Rural 82 108 7 ## West I 5 8 2 ## West II 57 60 3 ## West III 56 50 6 ## <NA> 1 1 0 ``` ] --- # `tabyl()` tablas cruzadas .pull-left[ ``` r vig %>% * tabyl(distrito, sexo, show_na = FALSE) ``` Elimina los valores que faltan o perdidos de la tabla. ] .pull-right[ ``` ## distrito hombre mujer ## Central I 14 18 ## Central II 22 19 ## East I 15 11 ## East II 38 37 ## East III 6 4 ## Mountain Rural 82 108 ## West I 5 8 ## West II 57 60 ## West III 56 50 ``` ] --- # `adorn_()` tablas cruzadas .pull-left[ ``` r vig %>% tabyl(distrito, sexo, show_na = FALSE) %>% * adorn_totals(where = "both") ``` Añade totales tanto para las filas como para las columnas. ] .pull-right[ ``` ## distrito hombre mujer Total ## Central I 14 18 32 ## Central II 22 19 41 ## East I 15 11 26 ## East II 38 37 75 ## East III 6 4 10 ## Mountain Rural 82 108 190 ## West I 5 8 13 ## West II 57 60 117 ## West III 56 50 106 ## Total 295 315 610 ``` ] --- # `adorn_()` tablas cruzadas .pull-left[ ``` r vig %>% tabyl(distrito, sexo, show_na = FALSE) %>% adorn_totals(where = "both") %>% * adorn_percentages() %>% * adorn_pct_formatting() ``` Con estos dos comandos, añade porcentajes con formato. ] .pull-right[ ``` ## distrito hombre mujer Total ## Central I 43.8% 56.2% 100.0% ## Central II 53.7% 46.3% 100.0% ## East I 57.7% 42.3% 100.0% ## East II 50.7% 49.3% 100.0% ## East III 60.0% 40.0% 100.0% ## Mountain Rural 43.2% 56.8% 100.0% ## West I 38.5% 61.5% 100.0% ## West II 48.7% 51.3% 100.0% ## West III 52.8% 47.2% 100.0% ## Total 48.4% 51.6% 100.0% ``` ] --- # `adorn_()` tablas cruzadas .pull-left[ ``` r vig %>% tabyl(distrito, sexo, show_na = FALSE) %>% adorn_totals(where = "both") %>% adorn_percentages() %>% * adorn_pct_formatting(digits = 0) ``` Establece el número de dígitos decimales. ] .pull-right[ ``` ## distrito hombre mujer Total ## Central I 44% 56% 100% ## Central II 54% 46% 100% ## East I 58% 42% 100% ## East II 51% 49% 100% ## East III 60% 40% 100% ## Mountain Rural 43% 57% 100% ## West I 38% 62% 100% ## West II 49% 51% 100% ## West III 53% 47% 100% ## Total 48% 52% 100% ``` ] ??? Esto puede parecer feo, pero puedes convertirlo en una imagen bonita muy fácilmente --- # {flextable} Canaliza fácilmente la tabla a `qflextable()` para convertirla a formato html. .pull-left[ ``` r vig %>% tabyl(distrito, sexo, show_na = FALSE) %>% adorn_totals(where = "both") %>% adorn_percentages() %>% adorn_pct_formatting(digits = 0) %>% * qflextable() ``` ] .pull-right[ <div class="tabwid"><style>.cl-dc7f65ba{}.cl-dc7b5c2c{font-family:'Helvetica';font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-dc7d0388{margin:0;text-align:left;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-dc7d181e{width:1.321in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d183c{width:0.803in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d185a{width:0.667in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d1864{width:0.676in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d1878{width:1.321in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d1882{width:0.803in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d188c{width:0.667in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d1896{width:0.676in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18a0{width:1.321in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18aa{width:0.803in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18b4{width:0.667in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18b5{width:0.676in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18c8{width:1.321in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18dc{width:0.803in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18e6{width:0.667in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18f0{width:0.676in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d18fa{width:1.321in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d1904{width:0.803in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d190e{width:0.667in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dc7d1918{width:0.676in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}</style><table data-quarto-disable-processing='true' class='cl-dc7f65ba'><thead><tr style="overflow-wrap:break-word;"><th class="cl-dc7d181e"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">distrito</span></p></th><th class="cl-dc7d183c"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">hombre</span></p></th><th class="cl-dc7d185a"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">mujer</span></p></th><th class="cl-dc7d1864"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">Total</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-dc7d1878"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">Central I</span></p></td><td class="cl-dc7d1882"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">44%</span></p></td><td class="cl-dc7d188c"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">56%</span></p></td><td class="cl-dc7d1896"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d1878"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">Central II</span></p></td><td class="cl-dc7d1882"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">54%</span></p></td><td class="cl-dc7d188c"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">46%</span></p></td><td class="cl-dc7d1896"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18a0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">East I</span></p></td><td class="cl-dc7d18aa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">58%</span></p></td><td class="cl-dc7d18b4"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">42%</span></p></td><td class="cl-dc7d18b5"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18a0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">East II</span></p></td><td class="cl-dc7d18aa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">51%</span></p></td><td class="cl-dc7d18b4"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">49%</span></p></td><td class="cl-dc7d18b5"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18a0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">East III</span></p></td><td class="cl-dc7d18aa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">60%</span></p></td><td class="cl-dc7d18b4"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">40%</span></p></td><td class="cl-dc7d18b5"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18c8"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">Mountain Rural</span></p></td><td class="cl-dc7d18dc"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">43%</span></p></td><td class="cl-dc7d18e6"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">57%</span></p></td><td class="cl-dc7d18f0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18a0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">West I</span></p></td><td class="cl-dc7d18aa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">38%</span></p></td><td class="cl-dc7d18b4"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">62%</span></p></td><td class="cl-dc7d18b5"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18a0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">West II</span></p></td><td class="cl-dc7d18aa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">49%</span></p></td><td class="cl-dc7d18b4"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">51%</span></p></td><td class="cl-dc7d18b5"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18a0"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">West III</span></p></td><td class="cl-dc7d18aa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">53%</span></p></td><td class="cl-dc7d18b4"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">47%</span></p></td><td class="cl-dc7d18b5"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dc7d18fa"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">Total</span></p></td><td class="cl-dc7d1904"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">48%</span></p></td><td class="cl-dc7d190e"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">52%</span></p></td><td class="cl-dc7d1918"><p class="cl-dc7d0388"><span class="cl-dc7b5c2c">100%</span></p></td></tr></tbody></table></div> ] .footnote[`qflextable()` significa "flexible rápido"] --- class: inverse, center, middle ## {tidyverse} - flexibilidad <img src="../../images/grouping/flexibility.png" width="65%" /> --- # Funciones Funciones comunes de agrupación/resumen del paquete {tidyverse}: - `count()` - `group_by()` - `summarise()` - `arrange()` --- # `count()` Pasa los datos a la función `count()` y proporciona un nombre de columna. Devuelve el número de filas por valor único (por grupo) -- ``` r vig %>% * count(hospital) ``` ``` ## hospital n ## 1 Central Hospital 49 ## 2 Military Hospital 91 ## 3 Otro 96 ## 4 Port Hospital 203 ## 5 SMMH 40 ## 6 <NA> 157 ``` ??? Muy rápido y ágil --- # `count()` Puedes incluir varias columnas de agrupación -- ``` r vig %>% * count(hospital, sexo) ``` ``` ## hospital sexo n ## 1 Central Hospital hombre 29 ## 2 Central Hospital mujer 19 ## 3 Central Hospital <NA> 1 ## 4 Military Hospital hombre 47 ## 5 Military Hospital mujer 38 ## 6 Military Hospital <NA> 6 ## 7 Otro hombre 43 ## 8 Otro mujer 49 ## 9 Otro <NA> 4 ## 10 Port Hospital hombre 89 ## 11 Port Hospital mujer 107 ## 12 Port Hospital <NA> 7 ## 13 SMMH hombre 15 ## 14 SMMH mujer 24 ## 15 SMMH <NA> 1 ## 16 <NA> hombre 73 ## 17 <NA> mujer 79 ## 18 <NA> <NA> 5 ``` ??? Muy rápido y ágil --- ## group_by() y summarise() Pero, ¿y si quieres algo más que los recuentos? -- "¿Cuál es la edad media en cada grupo?" -- "¿Cuál es la fecha más reciente de aparición de los síntomas en cada grupo?" -- "¿Cuál es el número de muertes entre los varones de cada grupo?" -- `group_by()` y `summarise()` juntas permiten la flexibilidad de crear una **nueva base de datos resumen** con **estadísticas por grupo**. .footnote[`summarise()` y `summarize()` son equivalentes] --- ## group_by() y summarise() ``` r vig %>% group_by(hospital) ``` No se observan cambios perceptibles en la base de datos hasta que se aplique otra función {dplyr}. -- Si se presenta, La entrada `Groups:` aparece encima de los datos. ``` ## # A tibble: 4 × 29 ## # Groups: hospital [2] ## id_caso difer sexo edad unidad_edad edad_anios edad_cat hospital distrito distrito_res ## <chr> <drtn> <chr> <dbl> <chr> <dbl> <fct> <chr> <chr> <chr> ## 1 86340d 1 days mujer 1 anios 1 0-9 Port Hospital Central II Mountain Ru… ## 2 92d002 4 days mujer 16 anios 16 10-19 <NA> Mountain Ru… Mountain Ru… ## 3 544bd1 1 days mujer 10 anios 10 10-19 <NA> East II East II ## 4 6056ba 1 days mujer 0 anios 0 0-9 <NA> West III West III ## # ℹ 19 more variables: distrito_not <chr>, translado <lgl>, fecha_sintomas <date>, peso_kg <int>, ## # alt_cm <int>, fiebre <chr>, escalofrios <chr>, tos <chr>, dolor <chr>, vomito <chr>, ## # temp <dbl>, imc <dbl>, admin3pcod <chr>, lab_conferma <lgl>, fecha_notifica <date>, lat <dbl>, ## # lon <dbl>, epilink <chr>, def_caso <chr> ``` .footnote[Observa la `groups: hospital`, en la parte superior del tibble] --- ## group_by() y summarise() Con la función `summarise()`, *se crean columnas en una **nueva** base de datos resumen.* -- <h4>summarise(<span style="color:deeppink">nombre de nueva columna</span> = <span style="color:cornflowerblue">una función</span> para aplicar a cada grupo de filas)</h4> -- ``` r vig %>% group_by(hospital) %>% summarise() ``` ``` ## # A tibble: 6 × 1 ## hospital ## <chr> ## 1 Central Hospital ## 2 Military Hospital ## 3 Otro ## 4 Port Hospital ## 5 SMMH ## 6 <NA> ``` --- ## group_by() y summarise() Dentro de los paréntesis, *enumera las nuevas columnas para la **nueva** base de datos resumen.* <h4>summarise(<span style="color:deeppink">nombre de nueva columna</span> = <span style="color:cornflowerblue">una función</span> para aplicar a cada grupo de filas)</h4> ``` r vig %>% group_by(hospital) %>% summarise(n_rows = n()) # n() cuenta el número de filas del grupo ``` ``` ## # A tibble: 6 × 2 ## hospital n_rows ## <chr> <int> ## 1 Central Hospital 49 ## 2 Military Hospital 91 ## 3 Otro 96 ## 4 Port Hospital 203 ## 5 SMMH 40 ## 6 <NA> 157 ``` --- ## group_by() y summarise() Dentro de los paréntesis, *enumera las nuevas columnas para la **nueva** base de datos resumen.* <h4>summarise(<span style="color:deeppink">nombre de nueva columna</span> = <span style="color:cornflowerblue">una función</span> para aplicar a cada grupo de filas)</h4> ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T)) # edad media del grupo ``` ``` ## # A tibble: 6 × 3 ## hospital n_rows age_avg ## <chr> <int> <dbl> ## 1 Central Hospital 49 14.9 ## 2 Military Hospital 91 15.8 ## 3 Otro 96 16.3 ## 4 Port Hospital 203 15.3 ## 5 SMMH 40 14.7 ## 6 <NA> 157 17.7 ``` --- ## group_by() y summarise() Dentro de los paréntesis, *enumera las nuevas columnas para la **nueva** base de datos resumen.* <h4>summarise(<span style="color:deeppink">nombre de nueva columna</span> = <span style="color:cornflowerblue">una función</span> para aplicar a cada grupo de filas)</h4> ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T), # edad media del grupo max_onset = max(fecha_sintomas, na.rm=T)) # Fecha de inicio más tardía ``` ``` ## # A tibble: 6 × 4 ## hospital n_rows age_avg max_onset ## <chr> <int> <dbl> <date> ## 1 Central Hospital 49 14.9 2014-11-26 ## 2 Military Hospital 91 15.8 2014-11-25 ## 3 Otro 96 16.3 2014-11-26 ## 4 Port Hospital 203 15.3 2014-11-28 ## 5 SMMH 40 14.7 2014-11-28 ## 6 <NA> 157 17.7 2014-11-27 ``` --- ## group_by() y summarise() Dentro de los paréntesis, *enumera las nuevas columnas para la **nueva** base de datos resumen.* <h4>summarise(<span style="color:deeppink">nombre de nueva columna</span> = <span style="color:cornflowerblue">una función</span> para aplicar a cada grupo de filas)</h4> ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T), # edad media del grupo max_onset = max(fecha_sintomas, na.rm=T), # Fecha de inicio más tardía n_female = sum(sexo == 'mujer', na.rm=T)) # número de mujeres en el grupo ``` ``` ## # A tibble: 6 × 5 ## hospital n_rows age_avg max_onset n_female ## <chr> <int> <dbl> <date> <int> ## 1 Central Hospital 49 14.9 2014-11-26 19 ## 2 Military Hospital 91 15.8 2014-11-25 38 ## 3 Otro 96 16.3 2014-11-26 49 ## 4 Port Hospital 203 15.3 2014-11-28 107 ## 5 SMMH 40 14.7 2014-11-28 24 ## 6 <NA> 157 17.7 2014-11-27 79 ``` --- ## group_by() y summarise() Dentro de los paréntesis, *enumera las nuevas columnas para la **nueva** base de datos resumen.* <h4>summarise(<span style="color:deeppink">nombre de nueva columna</span> = <span style="color:cornflowerblue">una función</span> para aplicar a cada grupo de filas)</h4> ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T), # edad media del grupo max_onset = max(fecha_sintomas, na.rm=T), # Fecha de inicio más tardía n_female = sum(sexo == 'mujer', na.rm=T), # número de mujeres en el grupo pct_female = percent(n_female / n_rows)) # % de mujeres en el grupo ``` ``` ## # A tibble: 6 × 6 ## hospital n_rows age_avg max_onset n_female pct_female ## <chr> <int> <dbl> <date> <int> <chr> ## 1 Central Hospital 49 14.9 2014-11-26 19 39% ## 2 Military Hospital 91 15.8 2014-11-25 38 42% ## 3 Otro 96 16.3 2014-11-26 49 51% ## 4 Port Hospital 203 15.3 2014-11-28 107 53% ## 5 SMMH 40 14.7 2014-11-28 24 60% ## 6 <NA> 157 17.7 2014-11-27 79 50% ``` --- # `arrange()` Ordena la tabla colocando la columna o columnas a ordenar dentro de la función `arrange()` ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T), # edad media del grupo max_onset = max(fecha_sintomas, na.rm=T), # Fecha de inicio más reciente n_female = sum(sexo == 'mujer', na.rm=T), # número de mujeres en el grupo pct_female = percent(n_female / n_rows)) %>% # Porcentaje de mujeres en el grupo * arrange(n_rows) ``` ``` ## # A tibble: 6 × 6 ## hospital n_rows age_avg max_onset n_female pct_female ## <chr> <int> <dbl> <date> <int> <chr> ## 1 SMMH 40 14.7 2014-11-28 24 60% ## 2 Central Hospital 49 14.9 2014-11-26 19 39% ## 3 Military Hospital 91 15.8 2014-11-25 38 42% ## 4 Otro 96 16.3 2014-11-26 49 51% ## 5 <NA> 157 17.7 2014-11-27 79 50% ## 6 Port Hospital 203 15.3 2014-11-28 107 53% ``` --- # `arrange()` Envuelve la(s) columna(s) en `desc()` para invertir el orden de las filas ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T), # edad media del grupo max_onset = max(fecha_sintomas, na.rm=T), # Fecha de inicio más tardía n_female = sum(sexo == 'mujer', na.rm=T), # número de mujeres en el grupo pct_female = percent(n_female / n_rows)) %>% # Porcentaje de mujeres en el grupo arrange(desc(n_rows)) ``` ``` ## # A tibble: 6 × 6 ## hospital n_rows age_avg max_onset n_female pct_female ## <chr> <int> <dbl> <date> <int> <chr> ## 1 Port Hospital 203 15.3 2014-11-28 107 53% ## 2 <NA> 157 17.7 2014-11-27 79 50% ## 3 Otro 96 16.3 2014-11-26 49 51% ## 4 Military Hospital 91 15.8 2014-11-25 38 42% ## 5 Central Hospital 49 14.9 2014-11-26 19 39% ## 6 SMMH 40 14.7 2014-11-28 24 60% ``` --- # flextable Con la función `qflextable()`, podemos dar un formato html para impresión de forma rápida. ``` r vig %>% group_by(hospital) %>% summarise( n_rows = n(), # n() cuenta el número de filas por grupo age_avg = mean(edad_anios, na.rm = T), # edad media del grupo max_onset = max(fecha_sintomas, na.rm=T), # Fecha de inicio más tardía n_female = sum(sexo == 'mujer', na.rm=T), # número de mujeres en el grupo pct_female = percent(n_female / n_rows)) %>% # Porcentaje de mujeres en el grupo arrange(-n_rows) %>% * qflextable() ``` <div class="tabwid"><style>.cl-dcd140ec{}.cl-dcce001c{font-family:'Helvetica';font-size:11pt;font-weight:normal;font-style:normal;text-decoration:none;color:rgba(0, 0, 0, 1.00);background-color:transparent;}.cl-dccf45d0{margin:0;text-align:left;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-dccf45e4{margin:0;text-align:right;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);padding-bottom:5pt;padding-top:5pt;padding-left:5pt;padding-right:5pt;line-height: 1;background-color:transparent;}.cl-dccf5372{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5386{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf539a{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf539b{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53a4{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53ae{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 1.5pt solid rgba(102, 102, 102, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53af{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53b0{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53b8{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53c2{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53c3{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53cc{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53e0{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53f4{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53fe{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf53ff{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5408{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5412{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5413{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf541c{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5430{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf543a{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf544e{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf544f{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5450{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5462{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5463{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf546c{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5480{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf548a{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf549e{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf549f{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54a0{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54b2{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54d0{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54e4{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 0 solid rgba(0, 0, 0, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54e5{width:1.372in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54f8{width:0.778in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54f9{width:0.922in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf54fa{width:1.067in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf550c{width:0.914in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}.cl-dccf5516{width:1.033in;background-color:transparent;vertical-align: middle;border-bottom: 1.5pt solid rgba(102, 102, 102, 1.00);border-top: 0 solid rgba(0, 0, 0, 1.00);border-left: 0 solid rgba(0, 0, 0, 1.00);border-right: 0 solid rgba(0, 0, 0, 1.00);margin-bottom:0;margin-top:0;margin-left:0;margin-right:0;}</style><table data-quarto-disable-processing='true' class='cl-dcd140ec'><thead><tr style="overflow-wrap:break-word;"><th class="cl-dccf5372"><p class="cl-dccf45d0"><span class="cl-dcce001c">hospital</span></p></th><th class="cl-dccf5386"><p class="cl-dccf45e4"><span class="cl-dcce001c">n_rows</span></p></th><th class="cl-dccf539a"><p class="cl-dccf45e4"><span class="cl-dcce001c">age_avg</span></p></th><th class="cl-dccf539b"><p class="cl-dccf45e4"><span class="cl-dcce001c">max_onset</span></p></th><th class="cl-dccf53a4"><p class="cl-dccf45e4"><span class="cl-dcce001c">n_female</span></p></th><th class="cl-dccf53ae"><p class="cl-dccf45d0"><span class="cl-dcce001c">pct_female</span></p></th></tr></thead><tbody><tr style="overflow-wrap:break-word;"><td class="cl-dccf53af"><p class="cl-dccf45d0"><span class="cl-dcce001c">Port Hospital</span></p></td><td class="cl-dccf53b0"><p class="cl-dccf45e4"><span class="cl-dcce001c">203</span></p></td><td class="cl-dccf53b8"><p class="cl-dccf45e4"><span class="cl-dcce001c">15.31072</span></p></td><td class="cl-dccf53c2"><p class="cl-dccf45e4"><span class="cl-dcce001c">2014-11-28</span></p></td><td class="cl-dccf53c3"><p class="cl-dccf45e4"><span class="cl-dcce001c">107</span></p></td><td class="cl-dccf53cc"><p class="cl-dccf45d0"><span class="cl-dcce001c">53%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dccf53e0"><p class="cl-dccf45d0"><span class="cl-dcce001c"></span></p></td><td class="cl-dccf53f4"><p class="cl-dccf45e4"><span class="cl-dcce001c">157</span></p></td><td class="cl-dccf53fe"><p class="cl-dccf45e4"><span class="cl-dcce001c">17.70701</span></p></td><td class="cl-dccf53ff"><p class="cl-dccf45e4"><span class="cl-dcce001c">2014-11-27</span></p></td><td class="cl-dccf5408"><p class="cl-dccf45e4"><span class="cl-dcce001c">79</span></p></td><td class="cl-dccf5412"><p class="cl-dccf45d0"><span class="cl-dcce001c">50%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dccf5413"><p class="cl-dccf45d0"><span class="cl-dcce001c">Otro</span></p></td><td class="cl-dccf541c"><p class="cl-dccf45e4"><span class="cl-dcce001c">96</span></p></td><td class="cl-dccf5430"><p class="cl-dccf45e4"><span class="cl-dcce001c">16.26862</span></p></td><td class="cl-dccf543a"><p class="cl-dccf45e4"><span class="cl-dcce001c">2014-11-26</span></p></td><td class="cl-dccf544e"><p class="cl-dccf45e4"><span class="cl-dcce001c">49</span></p></td><td class="cl-dccf544f"><p class="cl-dccf45d0"><span class="cl-dcce001c">51%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dccf5450"><p class="cl-dccf45d0"><span class="cl-dcce001c">Military Hospital</span></p></td><td class="cl-dccf5462"><p class="cl-dccf45e4"><span class="cl-dcce001c">91</span></p></td><td class="cl-dccf5463"><p class="cl-dccf45e4"><span class="cl-dcce001c">15.78409</span></p></td><td class="cl-dccf546c"><p class="cl-dccf45e4"><span class="cl-dcce001c">2014-11-25</span></p></td><td class="cl-dccf5480"><p class="cl-dccf45e4"><span class="cl-dcce001c">38</span></p></td><td class="cl-dccf548a"><p class="cl-dccf45d0"><span class="cl-dcce001c">42%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dccf549e"><p class="cl-dccf45d0"><span class="cl-dcce001c">Central Hospital</span></p></td><td class="cl-dccf549f"><p class="cl-dccf45e4"><span class="cl-dcce001c">49</span></p></td><td class="cl-dccf54a0"><p class="cl-dccf45e4"><span class="cl-dcce001c">14.85204</span></p></td><td class="cl-dccf54b2"><p class="cl-dccf45e4"><span class="cl-dcce001c">2014-11-26</span></p></td><td class="cl-dccf54d0"><p class="cl-dccf45e4"><span class="cl-dcce001c">19</span></p></td><td class="cl-dccf54e4"><p class="cl-dccf45d0"><span class="cl-dcce001c">39%</span></p></td></tr><tr style="overflow-wrap:break-word;"><td class="cl-dccf54e5"><p class="cl-dccf45d0"><span class="cl-dcce001c">SMMH</span></p></td><td class="cl-dccf54f8"><p class="cl-dccf45e4"><span class="cl-dcce001c">40</span></p></td><td class="cl-dccf54f9"><p class="cl-dccf45e4"><span class="cl-dcce001c">14.67500</span></p></td><td class="cl-dccf54fa"><p class="cl-dccf45e4"><span class="cl-dcce001c">2014-11-28</span></p></td><td class="cl-dccf550c"><p class="cl-dccf45e4"><span class="cl-dcce001c">24</span></p></td><td class="cl-dccf5516"><p class="cl-dccf45d0"><span class="cl-dcce001c">60%</span></p></td></tr></tbody></table></div> --- class: inverse, center, middle ## {gtsummary} - Estetica <img src="../../images/grouping/beauty.png" width="65%" /> --- # `tbl_summary()` - La salida por defecto está *lista para publicación/presentación* -- .pull-left[ ``` r vig %>% * select(hospital, edad_anios) ``` Selecciona las columnas a resumir. Para demostración: - Columna de un carácter (`hospital`) - Una columna numérica (`edad_anios`) ] --- # `tbl_summary()` - La salida por defecto debe ser *listo para publicar* .pull-left[ ``` r vig %>% select(hospital, edad_anios) %>% * tbl_summary() ``` Selecciona las columnas a resumir. Para demostración: - Columna de un carácter (`hospital`) - Una columna numérica (`edad_anios`) ] -- .pull-right[
Characteristic
N = 636
1
hospital
Central Hospital
49 (10%)
Military Hospital
91 (19%)
Otro
96 (20%)
Port Hospital
203 (42%)
SMMH
40 (8.4%)
Unknown
157
edad_anios
13 (6, 23)
Unknown
9
1
n (%); Median (Q1, Q3)
] --- # `tbl_summary()` - Estratificar por otra variable .pull-left[ ``` r vig %>% select(hospital, edad_anios, sexo) %>% * tbl_summary(by = sexo) ``` Consulta los consejos de personalización en [Manual de Epi R capítulo sobre Tablas descriptivas](https://epirhandbook.com/en/descriptive-tables.html#tbl_gt)) ] -- .pull-right[
Characteristic
hombre
N = 296
1
mujer
N = 316
1
edad_anios
17 (7, 28)
11 (5, 19)
hospital
Central Hospital
29 (13%)
19 (8.0%)
Military Hospital
47 (21%)
38 (16%)
Otro
43 (19%)
49 (21%)
Port Hospital
89 (40%)
107 (45%)
SMMH
15 (6.7%)
24 (10%)
Unknown
73
79
1
Median (Q1, Q3); n (%)
] --- # `tbl_summary()` - Ajustar etiquetas .pull-left[ ``` r vig %>% select(hospital, edad_anios, sexo) %>% tbl_summary( by = sexo, label = list( edad_anios = "Edad (años)", hospital = "Hospital")) ``` Consulta los consejos sobre personalización en [Manual de Epi R capítulo sobre Tablas descriptivas](https://epirhandbook.com/en/descriptive-tables.html#tbl_gt)) ] -- .pull-right[
Characteristic
hombre
N = 296
1
mujer
N = 316
1
Hospital
Central Hospital
29 (13%)
19 (8.0%)
Military Hospital
47 (21%)
38 (16%)
Otro
43 (19%)
49 (21%)
Port Hospital
89 (40%)
107 (45%)
SMMH
15 (6.7%)
24 (10%)
Unknown
73
79
Edad (años)
17 (7, 28)
11 (5, 19)
1
n (%); Median (Q1, Q3)
] --- class: inverse, center, middle ## ¿Cuál utilizar? En R, tienes muchas opciones. Siéntete cómodo con una herramienta que funcione para ti. <img src="../../images/grouping/choices.png" width="90%" /> --- class: inverse, center, middle ## Ejercicio Ir al sitio web del curso Abre el ejercicio del Módulo 4 e inicia sesión Sigue las instrucciones para abrir tu proyecto R "ébola" y continuar codificando Avisa a un instructor si no estás seguro de lo que tienes que hacer <img src="../../images/breakout/COVID dominoes.png" width="100%" />