Generar tablas estadísticas listas para publicación usando gt, kableExtra o flextable. Cubre estadísticos descriptivos, resultados de regresión, tablas ANOVA, matrices de correlación y formato APA. Usar al crear tablas de estadísticos descriptivos, formatear resultados de regresión o ANOVA, construir matrices de correlación, producir tablas estilo APA para artículos académicos o generar tablas para documentos Quarto y R Markdown.
Scanned 5/29/2026
Install via CLI
openskills install pjt222/agent-almanac---
name: generate-statistical-tables
description: >
Generar tablas estadísticas listas para publicación usando gt, kableExtra
o flextable. Cubre estadísticos descriptivos, resultados de regresión,
tablas ANOVA, matrices de correlación y formato APA. Usar al crear tablas
de estadísticos descriptivos, formatear resultados de regresión o ANOVA,
construir matrices de correlación, producir tablas estilo APA para artículos
académicos o generar tablas para documentos Quarto y R Markdown.
license: MIT
allowed-tools: Read Write Edit Bash Grep Glob
metadata:
author: Philipp Thoss
version: "1.0"
domain: reporting
complexity: intermediate
language: R
tags: r, tables, gt, statistics, publication
locale: es
source_locale: en
source_commit: 6f65f316
translator: claude-sonnet-4-6
translation_date: 2026-03-16
---
# Generar Tablas Estadísticas
Crear tablas estadísticas listas para publicación para informes y manuscritos.
## Cuándo Usar
- Crear tablas de estadísticos descriptivos
- Formatear resultados de regresión o ANOVA
- Construir matrices de correlación
- Producir tablas estilo APA para artículos académicos
- Generar tablas para documentos Quarto/R Markdown
## Entradas
- **Requerido**: Resultados de análisis estadístico (objetos de modelo, datos resumidos)
- **Requerido**: Formato de salida (HTML, PDF, Word)
- **Opcional**: Guía de estilo (APA, específica de revista)
- **Opcional**: Esquema de numeración de tablas
## Procedimiento
### Paso 1: Elegir Paquete de Tablas
| Paquete | Mejor para | Formatos |
|---------|----------|---------|
| `gt` | HTML, propósito general | HTML, PDF, Word |
| `kableExtra` | Documentos LaTeX/PDF | PDF, HTML |
| `flextable` | Documentos Word | Word, PDF, HTML |
| `gtsummary` | Resúmenes clínicos/estadísticos | Todos vía gt/flextable |
**Esperado:** Un paquete de tablas seleccionado basado en el formato de salida y caso de uso. El paquete elegido está instalado y es cargable.
**En caso de fallo:** Si el paquete requerido no está instalado, ejecutar `install.packages("gt")` (o el paquete apropiado). Para `gtsummary`, tanto `gt` como `gtsummary` deben estar instalados.
### Paso 2: Tabla de Estadísticos Descriptivos
```r
library(gt)
descriptives <- data |>
group_by(group) |>
summarise(
n = n(),
M = mean(score, na.rm = TRUE),
SD = sd(score, na.rm = TRUE),
Min = min(score, na.rm = TRUE),
Max = max(score, na.rm = TRUE)
)
gt(descriptives) |>
tab_header(
title = "Table 1",
subtitle = "Descriptive Statistics by Group"
) |>
fmt_number(columns = c(M, SD), decimals = 2) |>
fmt_number(columns = c(Min, Max), decimals = 1) |>
cols_label(
group = "Group",
n = md("*n*"),
M = md("*M*"),
SD = md("*SD*")
)
```
**Esperado:** Un objeto tabla `gt` con medias, desviaciones estándar y conteos formateados agrupados por categoría. Los encabezados de columna usan notación estadística apropiada (*M*, *SD*, *n* en cursiva).
**En caso de fallo:** Si `group_by()` produce resultados inesperados, verificar que la variable de agrupación exista y tenga los niveles esperados. Si `fmt_number()` produce un error, asegurar que las columnas objetivo contengan datos numéricos.
### Paso 3: Tabla de Resultados de Regresión
```r
model <- lm(outcome ~ predictor1 + predictor2 + predictor3, data = data)
library(gtsummary)
tbl_regression(model) |>
bold_p() |>
add_glance_source_note(
include = c(r.squared, adj.r.squared, nobs)
) |>
modify_header(label = "**Predictor**") |>
modify_caption("Table 2: Regression Results")
```
**Esperado:** Una tabla de regresión `gtsummary` con valores p en negrita, estadísticos de ajuste del modelo (R-cuadrado, N) en una nota al pie, y un subtítulo descriptivo.
**En caso de fallo:** Si `tbl_regression()` falla, verificar que la entrada sea un objeto de modelo (p. ej., `lm`, `glm`). Si `add_glance_source_note()` produce errores, verificar que `broom` pueda procesar el modelo: `broom::glance(model)`.
### Paso 4: Matriz de Correlación
```r
library(gt)
cor_matrix <- cor(data[, c("var1", "var2", "var3", "var4")],
use = "pairwise.complete.obs")
# Format lower triangle
cor_matrix[upper.tri(cor_matrix)] <- NA
as.data.frame(cor_matrix) |>
tibble::rownames_to_column("Variable") |>
gt() |>
fmt_number(decimals = 2) |>
sub_missing(missing_text = "") |>
tab_header(title = "Table 3", subtitle = "Correlation Matrix")
```
**Esperado:** Una matriz de correlación de triángulo inferior renderizada como tabla `gt` con triángulo superior en blanco, dos decimales y un subtítulo claro.
**En caso de fallo:** Si `sub_missing()` no oculta el triángulo superior, verificar que los valores `NA` se establecieron correctamente con `cor_matrix[upper.tri(cor_matrix)] <- NA`. Si las variables no son numéricas, `cor()` fallará; filtrar solo columnas numéricas primero.
### Paso 5: Tabla ANOVA
```r
aov_result <- aov(score ~ group * condition, data = data)
library(gtsummary)
tbl_anova <- broom::tidy(aov_result) |>
gt() |>
fmt_number(columns = c(sumsq, meansq, statistic), decimals = 2) |>
fmt_number(columns = p.value, decimals = 3) |>
cols_label(
term = "Source",
df = md("*df*"),
sumsq = md("*SS*"),
meansq = md("*MS*"),
statistic = md("*F*"),
p.value = md("*p*")
) |>
tab_header(title = "Table 4", subtitle = "ANOVA Results")
```
**Esperado:** Una tabla ANOVA formateada con columnas Fuente, *df*, *SS*, *MS*, *F* y *p*. Los términos de interacción están claramente etiquetados y los valores p están formateados a tres decimales.
**En caso de fallo:** Si `broom::tidy(aov_result)` produce columnas inesperadas, verificar que el modelo sea un objeto `aov`. Para sumas de cuadrados Tipo III, usar `car::Anova(model, type = 3)` en lugar de `aov()` base.
### Paso 6: Guardar Tablas
```r
# Save as HTML
gtsave(my_table, "table1.html")
# Save as Word
gtsave(my_table, "table1.docx")
# Save as PNG image
gtsave(my_table, "table1.png")
# For LaTeX/PDF (kableExtra)
kableExtra::save_kable(kable_table, "table1.pdf")
```
**Esperado:** Tabla guardada en el formato de archivo especificado (HTML, Word, PNG o PDF). El archivo de salida se abre correctamente en la aplicación apropiada.
**En caso de fallo:** Si `gtsave()` falla para formato Word, asegurar que el paquete `webshot2` esté instalado. Para salida PDF vía `kableExtra`, asegurar que una distribución LaTeX (TinyTeX o MiKTeX) esté instalada.
### Paso 7: Incrustar en Documento Quarto
````markdown
```{r}
#| label: tbl-descriptives
#| tbl-cap: "Descriptive Statistics by Group"
gt(descriptives) |>
fmt_number(columns = c(M, SD), decimals = 2)
```
See @tbl-descriptives for summary statistics.
````
**Esperado:** La tabla se renderiza en línea en el documento Quarto con una etiqueta referenciable (`@tbl-*`) y un subtítulo apropiado. La tabla se adapta al formato de salida del documento automáticamente.
**En caso de fallo:** Si la tabla no se renderiza, verificar que la etiqueta del bloque comience con `tbl-` para referencias cruzadas en Quarto. Si el formato se pierde en PDF, cambiar de `gt` a `kableExtra` para salida basada en LaTeX.
## Validación
- [ ] La tabla se renderiza correctamente en el formato objetivo (HTML, PDF, Word)
- [ ] Los números están formateados consistentemente (decimales, alineación)
- [ ] La notación estadística sigue la guía de estilo (cursivas, símbolos apropiados)
- [ ] La tabla tiene un subtítulo claro y numeración
- [ ] Los encabezados de columna son significativos
- [ ] Las notas/notas al pie explican abreviaturas o marcadores de significancia
## Errores Comunes
- **gt en PDF**: gt tiene soporte limitado para PDF. Usar kableExtra para documentos con mucho LaTeX.
- **Inconsistencia en redondeo**: Siempre usar `fmt_number()` (gt) o `format()` en lugar de `round()` para visualización
- **Visualización de valores faltantes**: Configurar con `sub_missing()` en gt o `options(knitr.kable.NA = "")`
- **Tablas anchas en PDF**: Las tablas que exceden el ancho de página necesitan `landscape()` o reducción del tamaño de fuente
- **Formato numérico APA**: Sin cero inicial para valores acotados por 1 (valores p, correlaciones): ".03" no "0.03"
## Habilidades Relacionadas
- `format-apa-report` - tablas dentro de manuscritos APA
- `create-quarto-report` - incrustar tablas en informes
- `build-parameterized-report` - tablas que se adaptan a parámetros
No comments yet. Be the first to comment!