generate-statistical-tables
Acerca de
Esta habilidad genera tablas estadísticas listas para publicación en R utilizando paquetes como gt, kableExtra o flextable. Crea estadísticas descriptivas, resultados de regresión, tablas ANOVA y salidas con formato APA para artículos académicos. Úsela al formatear resultados de análisis para Quarto, R Markdown o informes de manuscritos.
Instalación rápida
Claude Code
Recomendadonpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/generate-statistical-tablesCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
Generate Statistical Tables
Pub-ready stat tables for reports + manuscripts.
Use When
- Descriptive stats tables
- Regression / ANOVA output format
- Correlation matrices
- APA-style academic
- Quarto / R Markdown tables
In
- Required: stat results (models, summaries)
- Required: out format (HTML, PDF, Word)
- Optional: style guide (APA, journal)
- Optional: numbering scheme
Do
Step 1: Choose pkg
| Package | Best for | Formats |
|---|---|---|
gt | HTML, general-purpose | HTML, PDF, Word |
kableExtra | LaTeX/PDF documents | PDF, HTML |
flextable | Word documents | Word, PDF, HTML |
gtsummary | Clinical/statistical summaries | All via gt/flextable |
→ Pkg selected by format + use case, installed + loadable.
If err: missing → install.packages("gt") (or proper). gtsummary needs gt + gtsummary.
Step 2: Descriptive stats
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*")
)
→ gt object w/ M, SD, n grouped, italic headers.
If err: group_by() unexpected → verify var + levels. fmt_number() err → numeric cols.
Step 3: Regression results
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")
→ Regression table w/ bold p, fit stats note, caption.
If err: tbl_regression() fail → verify model obj (lm, glm). add_glance_source_note() err → check broom::glance(model).
Step 4: Correlation matrix
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")
→ Lower-triangle cor matrix w/ blanked upper, 2 dec, caption.
If err: sub_missing() not blanking → check NA set. Non-numeric → cor() fails → filter numeric.
Step 5: ANOVA table
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")
→ ANOVA w/ Source, df, SS, MS, F, p. Interactions labeled, p to 3 dec.
If err: broom::tidy(aov_result) unexpected cols → verify aov obj. Type III SS → car::Anova(model, type = 3).
Step 6: Save
# 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")
→ Saved to format. Opens correctly.
If err: gtsave() Word fail → install webshot2. PDF via kableExtra → install TinyTeX/MiKTeX.
Step 7: Embed in 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.
→ Renders inline w/ @tbl-* cross-ref + caption. Adapts to format.
If err: no render → chunk label tbl- prefix. PDF formatting lost → switch gt → kableExtra.
Check
- Renders in target format
- Consistent number format
- Stat notation per style (italic, symbols)
- Clear caption + numbering
- Meaningful headers
- Notes/footnotes explain abbrevs + sig markers
Traps
- gt in PDF: limited. Use kableExtra for LaTeX.
- Rounding inconsistency:
fmt_number()(gt) /format()notround(). - Missing values:
sub_missing()(gt) oroptions(knitr.kable.NA = ""). - Wide PDF:
landscape()or font reduction. - APA number: no leading zero when ≤1 (p, corr): ".03" not "0.03".
→
format-apa-report— APA manuscript tablescreate-quarto-report— embed in reportsbuild-parameterized-report— param-adaptive tables
Repositorio GitHub
Habilidades relacionadas
content-collections
MetaEsta habilidad proporciona una configuración probada en producción para Content Collections, una herramienta centrada en TypeScript que transforma archivos Markdown/MDX en colecciones de datos con tipado seguro mediante validación Zod. Úsala al construir blogs, sitios de documentación o aplicaciones Vite + React con mucho contenido para garantizar seguridad de tipos y validación automática de contenido. Abarca todo, desde la configuración del plugin de Vite y compilación MDX hasta la optimización de despliegue y validación de esquemas.
polymarket
MetaEsta habilidad permite a los desarrolladores crear aplicaciones con la plataforma de mercados de predicción Polymarket, incluyendo la integración de API para operaciones y datos de mercado. También proporciona transmisión de datos en tiempo real a través de WebSocket para monitorear operaciones en vivo y actividad del mercado. Úsela para implementar estrategias de trading o crear herramientas que procesen actualizaciones de mercado en tiempo real.
creating-opencode-plugins
MetaEsta habilidad ayuda a los desarrolladores a crear complementos de OpenCode que se conectan a más de 25 tipos de eventos, como comandos, archivos y operaciones LSP. Proporciona la estructura del complemento, las especificaciones de la API de eventos y los patrones de implementación para módulos en JavaScript/TypeScript. Úsala cuando necesites interceptar, monitorear o extender el ciclo de vida del asistente de IA de OpenCode con lógica personalizada basada en eventos.
sglang
MetaSGLang es un framework de alto rendimiento para el servicio de LLM que se especializa en generación rápida y estructurada para JSON, expresiones regulares y flujos de trabajo de agentes utilizando su caché de prefijos RadixAttention. Ofrece una inferencia significativamente más rápida, especialmente para tareas con prefijos repetidos, lo que lo hace ideal para salidas complejas y estructuradas, y conversaciones multiturno. Elige SGLang sobre alternativas como vLLM cuando necesites decodificación restringida o estés construyendo aplicaciones con uso extensivo de prefijos compartidos.
