generate-statistical-tables
について
このスキルは、gt、kableExtra、flextableなどのパッケージを使用して、Rで出版可能な統計表を生成します。記述統計、回帰分析の結果、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
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
GitHub リポジトリ
関連スキル
content-collections
メタこのスキルは、Content Collections(Markdown/MDXファイルを型安全なデータコレクションに変換するTypeScriptファーストのツール)の本番環境でテストされた設定を提供します。Zodバリデーションによる型安全性を実現し、ブログ、ドキュメントサイト、コンテンツ重視のVite + Reactアプリケーション構築時にご利用ください。Viteプラグインの設定、MDXコンパイルから、デプロイ最適化、スキーマバリデーションまで、すべてを網羅しています。
polymarket
メタこのスキルは、開発者がPolymarket予測市場プラットフォームを活用したアプリケーション構築を可能にします。API統合による取引や市場データの取得に加え、WebSocketを介したリアルタイムデータストリーミングにより、ライブ取引や市場活動を監視できます。取引戦略の実装や、ライブ市場更新を処理するツールの作成にご利用ください。
creating-opencode-plugins
メタこのスキルは、開発者がコマンド、ファイル、LSP操作など25種類以上のイベントタイプにフックするOpenCodeプラグインを作成することを支援します。JavaScript/TypeScriptモジュール向けに、プラグイン構造、イベントAPI仕様、および実装パターンを提供します。カスタムイベント駆動ロジックでOpenCode AIアシスタントのライフサイクルをインターセプト、監視、または拡張する必要がある場合にご利用ください。
sglang
メタSGLangは、高性能なLLMサービングフレームワークであり、RadixAttentionプレフィックスキャッシュを活用したJSON、正規表現、エージェントワークフロー向けの高速で構造化された生成を特長とします。特にプレフィックスが繰り返されるタスクにおいて、大幅に高速な推論を実現し、複雑な構造化出力やマルチターン対話に最適です。制約付きデコードが必要な場合や、広範なプレフィックス共有を伴うアプリケーションを構築する場合は、vLLMなどの代替案ではなくSGLangを選択してください。
