Agent-almanac generate-statistical-tables
git clone https://github.com/pjt222/agent-almanac
T=$(mktemp -d) && git clone --depth=1 https://github.com/pjt222/agent-almanac "$T" && mkdir -p ~/.claude/skills && cp -r "$T/i18n/es/skills/generate-statistical-tables" ~/.claude/skills/pjt222-agent-almanac-generate-statistical-tables-e1452b && rm -rf "$T"
i18n/es/skills/generate-statistical-tables/SKILL.mdGenerar 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 |
|---|---|---|
| HTML, propósito general | HTML, PDF, Word |
| Documentos LaTeX/PDF | PDF, HTML |
| Documentos Word | Word, PDF, HTML |
| 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
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
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
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
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
# 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
```{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
(gt) ofmt_number()
en lugar deformat()
para visualizaciónround() - Visualización de valores faltantes: Configurar con
en gt osub_missing()options(knitr.kable.NA = "") - Tablas anchas en PDF: Las tablas que exceden el ancho de página necesitan
o reducción del tamaño de fuentelandscape() - Formato numérico APA: Sin cero inicial para valores acotados por 1 (valores p, correlaciones): ".03" no "0.03"
Habilidades Relacionadas
- tablas dentro de manuscritos APAformat-apa-report
- incrustar tablas en informescreate-quarto-report
- tablas que se adaptan a parámetrosbuild-parameterized-report