返回技能列表

generate-statistical-tables

pjt222
更新于 2 days ago
6 次查看
17
2
17
在 GitHub 上查看
worddesign

关于

This Claude Skill generates publication-ready statistical tables in R using gt, kableExtra, or flextable. It creates descriptive statistics, regression results, ANOVA tables, correlation matrices, and APA-formatted outputs. Use it for academic papers or Quarto/R Markdown documents when you need to format and present statistical analysis.

快速安装

Claude Code

推荐
主要方式
npx skills add pjt222/agent-almanac -a claude-code
插件命令备选方式
/plugin add https://github.com/pjt222/agent-almanac
Git 克隆备选方式
git 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

PackageBest forFormats
gtHTML, general-purposeHTML, PDF, Word
kableExtraLaTeX/PDF documentsPDF, HTML
flextableWord documentsWord, PDF, HTML
gtsummaryClinical/statistical summariesAll 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) or format() not round() for display
  • Missing values display: Set with sub_missing() in gt or options(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 manuscripts
  • create-quarto-report - embed tables in reports
  • build-parameterized-report - tables that adapt to parameters

GitHub 仓库

pjt222/agent-almanac
路径: i18n/caveman/skills/generate-statistical-tables
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

相关推荐技能

content-collections

Content Collections 是一个 TypeScript 优先的构建工具,可将本地 Markdown/MDX 文件转换为类型安全的数据集合。它专为构建博客、文档站和内容密集型 Vite+React 应用而设计,提供基于 Zod 的自动模式验证。该工具涵盖从 Vite 插件配置、MDX 编译到生产环境部署的完整工作流。

查看技能

polymarket

这个Claude Skill为开发者提供完整的Polymarket预测市场开发支持,涵盖API调用、交易执行和市场数据分析。关键特性包括实时WebSocket数据流,可监控实时交易、订单和市场动态。开发者可用它构建预测市场应用、实施交易策略并集成实时市场预测功能。

查看技能

creating-opencode-plugins

该Skill帮助开发者创建OpenCode插件,用于接入命令、文件、LSP等25+种事件。它提供了插件结构、事件API规范和JavaScript/TypeScript实现模式,适合需要拦截操作、扩展功能或自定义事件处理的场景。开发者可通过它快速构建响应式模块来增强OpenCode AI助手的能力。

查看技能

sglang

SGLang是一个专为LLM设计的高性能推理框架,特别适用于需要结构化输出的场景。它通过RadixAttention前缀缓存技术,在处理JSON、正则表达式、工具调用等具有重复前缀的复杂工作流时,能实现极速生成。如果你正在构建智能体或多轮对话系统,并追求远超vLLM的推理性能,SGLang是理想选择。

查看技能