第7回:再現可能な文書の作成

2024-05-14

https://data-science-chiba-2024.github.io/day7/

ディスカッション

よくあるパターン:Rで解析後、その結果をWordにコピペする

  • この方法のメリットデメリットを議論してください

解析結果をWordにコピペする

  • 利点:
    • 手軽である(一度だけの場合)
  • 欠点:
    • 文章に記載された結果がデータに基づいている保証がない
    • 解析を再び行った場合、どの部分を再度コピペすべきか不明確になる

Quartoを用いた再現可能な文書の作成

  • Quartoとは、Rコードの計算結果を直接文書に埋め込むためのソフトウェア

  • RやRStudioとは別だが、RStudioと一緒にインストールされるため、個別にインストールする必要はない

  • ファイルの拡張子は.Qmd

    • 「Quarto Markdown」(Markdownについては後ほど説明する)

.Qmdファイルの基本

---
title: "Diamond sizes"
date: 2022-09-12
format: html
---

```{r}
#| label: setup
#| include: false

library(tidyverse)

smaller <- diamonds |> 
  filter(carat <= 2.5)
```

We have data about `r nrow(diamonds)` diamonds.
Only `r nrow(diamonds) - nrow(smaller)` are larger than 2.5 carats.
The distribution of the remainder is shown below:

```{r}
#| label: plot-smaller-diamonds
#| echo: false

smaller |> 
  ggplot(aes(x = carat)) + 
  geom_freqpoly(binwidth = 0.01)
```

今までのコードの書き方(.Rファイル)

  • 普通に書く文章は正常なコードでないといけない

  • 他の文章はコメントとして書く

# 小さなデータセットを作る
smaller <- diamonds |> 
  filter(carat <= 2.5)

Quartoの書き方

  • 今までの書き方の反対
    • 普通に書く文章はコードではない
    • コードを特別な場所で
      書く(コードチャンク
    • ```{r}```で囲む
Let's make a smaller dataset:

```{r}
#| label: setup
#| include: false

library(tidyverse)

smaller <- diamonds |> 
  filter(carat <= 2.5)
```

コードの実行の仕方

  • RStudioには、それぞれのコードチャンクの上に「再生」ボタンをクリック

コードの実行の仕方

  • おすすめ:設定を「Chunk Output in Console」に変える

コードの実行の仕方

  • 全部を一気に走らせて、レポートを作成するには、「Render」ボタンをクリック

コードの実行の仕方

  • デフォルトでは、レポートはHTML形式

YAMLヘッダーについて

  • YAMLとは、「YAML ain’t markup language」の略
    • プログラマーの冗談みたいな名前。気にしないでください。
  • 設定を書くための言語。項目名を書いて、コロンを書いて、設定を書く:
項目1: 設定
項目2: 設定
title: "Diamond sizes"
date: 2022-09-12

YAMLヘッダーで設定する項目

  • タイトル
  • 著者名
  • 出版日程
  • 形式(PDF、HTML、docx)

など

チャレンジ

出力をdocxに変えてから、レポートを出力してください

Markdownでレポートの見た目を調整する

  • .Qmdファイルはプレーンテキスト(フォントや文字のサイズなど変えることができない)

  • レポートのフォントなどを変えたい時は、Markdownというコードを使う:

*italic*

**bold**

~~strikeout~~

italic

bold

strikeout

コードチャンクの設定

  • それぞれのコードチャンクの設定を変えることができる

  • 多くの場合、レポートでは解析結果を作ったコードを見せたくない

    • echo: false設定でコードを隠す
  • コードチャンクの始まりに#|で始まる行に設定をYAMLで書く

コードチャンクの設定

```{r}
#| echo: false
library(tidyverse)

smaller <- diamonds |> 
  filter(carat <= 2.5)
```

他の設定など

レポート

  • Tidy Tuesdayプロジェクトが提供しているデータセットを使って、二つ以上のグラフを作成し、そのグラフから読み取るメッセージを説明してください

  • QuartoとRを使って書いて、HTMLとして出力

  • 次回(5月28日)までに提出して、授業中に発表する

レポートのデータの読み込み

library(tidytuesdayR)
tuesdata <- tt_load(2022, week = 10)
erasmus <- tuesdata$erasmus

データの詳細については、こちらを見てください