generate-statistical-tables
О программе
Этот навык Claude генерирует готовые к публикации статистические таблицы в R с использованием gt, kableExtra или flextable. Он создает описательную статистику, результаты регрессионного анализа, таблицы ANOVA, корреляционные матрицы и выводы в формате APA. Используйте его для академических статей или документов Quarto/R Markdown, когда требуется форматирование и представление статистического анализа.
Быстрая установка
Claude Code
Рекомендуетсяnpx 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-tablesСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
Generate Statistical Tables
Make publication-ready stats tables for reports + manuscripts.
When Use
- Make descriptive stats tables
- Format regression or ANOVA output
- Build correlation matrices
- Make APA-style tables for academic papers
- Make tables for Quarto/R Markdown docs
Inputs
- Required: Stats analysis results (model objects, summary data)
- Required: Output format (HTML, PDF, Word)
- Optional: Style guide (APA, journal-specific)
- Optional: Table numbering scheme
Steps
Step 1: Pick Table Package
| 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 |
Got: Table package picked by output format + use case. Package installed + loadable.
If fail: Package not installed? Run install.packages("gt") (or right one). gtsummary needs both gt + gtsummary installed.
Step 2: Descriptive Statistics Table
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*")
)
Got: gt table object with formatted means, SDs, counts by category. Column headers use proper stats notation (italic M, SD, n).
If fail: group_by() unexpected? Verify grouping variable exists + has expected levels. fmt_number() errors? Target columns must be numeric.
Step 3: Regression Results Table
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")
Got: gtsummary regression table with bold p-values, model fit stats (R-squared, N) in source note, descriptive caption.
If fail: tbl_regression() fails? Verify input is model object (lm, glm). add_glance_source_note() errors? Check broom can tidy: 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")
Got: Lower-triangle correlation matrix as gt table. Upper triangle blank, two decimal places, clear caption.
If fail: sub_missing() won't blank upper triangle? Verify NA set via cor_matrix[upper.tri(cor_matrix)] <- NA. Non-numeric variables → cor() fails; filter to numeric columns first.
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")
Got: Formatted ANOVA table with Source, df, SS, MS, F, p columns. Interaction terms labeled, p-values to three decimals.
If fail: broom::tidy(aov_result) unexpected columns? Verify model = aov object. Type III sums of squares → use car::Anova(model, type = 3) not base aov().
Step 6: Save Tables
# 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")
Got: Table saved to specified format (HTML, Word, PNG, PDF). Output file opens in right application.
If fail: gtsave() fails for Word? webshot2 package needed. PDF output via kableExtra → needs LaTeX distribution (TinyTeX or MiKTeX).
Step 7: Embed in Quarto Document
```{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.
Got: Table renders inline in Quarto doc, cross-reference label (@tbl-*), proper caption. Table adapts to document output format automatically.
If fail: Table won't render? Chunk label must start with tbl- for Quarto cross-ref. Formatting lost in PDF → switch from gt to kableExtra for LaTeX output.
Checks
- Table renders correct in target format (HTML, PDF, Word)
- Numbers formatted consistent (decimals, alignment)
- Stats notation follows style guide (italicized, proper symbols)
- Table has clear caption + numbering
- Column headers meaningful
- Notes/footnotes explain abbreviations + significance markers
Pitfalls
- gt in PDF: gt has limited PDF support. Use kableExtra for LaTeX-heavy docs.
- Rounding inconsistency: Always use
fmt_number()(gt) orformat()notround()for display - Missing values display: Set with
sub_missing()in gt oroptions(knitr.kable.NA = "") - Wide tables in PDF: Tables over page width need
landscape()or smaller font - APA number formatting: No leading zero for values bounded by 1 (p-values, correlations): ".03" not "0.03"
See Also
format-apa-report- tables in APA manuscriptscreate-quarto-report- embed tables in reportsbuild-parameterized-report- tables that adapt to parameters
GitHub репозиторий
Похожие навыки
content-collections
МетаЭтот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
polymarket
МетаЭтот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
creating-opencode-plugins
МетаЭтот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
sglang
МетаSGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
