5講:R Markdownを使ってレポートを作成するには?

 しまうまのRでデータ分析入門【全6講】では、統計解析用のプログラミング言語Rで重回帰分析を行い、R MarkdownでPDF化するまでを解説します。

 この記事では、Rから直接PDFを出力する方法を解説します。R Markdownです。

 実際の分析を行なっていると

  • コードを残したい →保管用のR Scriptを作るのは、絶妙に手間がかかる
  • 昔やったあの分析どうやったっけ? →PCのフォルダを開け閉めして、探す時間が無駄!
  • 出力結果を文書化しないと! →結果をエクセルにコピペして、ワードで線を整える。だるい
  • 出力結果表をいくつも作って比較したい →え?だるすぎ
  • コードと出力結果を他人に送りたい →R Scriptと出力結果送ればいいからだるくはないけれど、クールじゃないよなあ

という場面に出くわします。

 ここで、R Markdownを使うと、コードも出力結果も載せられるので、上のお悩みは一挙解決です。

 また、そもそもMarkdownは文書ツールですので、レポート作成も綺麗に出来ます。LaTeXが使えるので数式を綺麗に出力できます。

1. 準備

 R Scriptを開いて次の3つを何も考えずに実行してください。(初回だけ)

#パッケージrmarkdownのインストール
install.packages('rmarkdown')

#パッケージrmarkdownの呼び出し
library(rmarkdown)

#パッケージtinytexのインストール
install.packages('tinytex')

#TinyTexをインストール ※LaTeXが使えるようになります
tinytex::install_tinytex()

# IPAフォントをインストール ※日本語が使えるようになります
tinytex::tlmgr_install("ipaex")

2. R MarkdownでPDFを作る

(1)R Markdownの起動

  • 左上の「+」と「白紙」のボタンを押して、R Markdownをクリックしてください。↓
画像1:R Markdownを開く
  • Title(タイトル)やAuthor(著者)を適当に入力し、「HTML」ではなく「PDF」にチェックをいれましょう。
  • そして「OK」をクリックします。

(2)R MarkdownでPDFを出力

  • 何やら多くのコードが出てきますが、気にしてはいけません。
  • 次に「Knit」を押します。
  • 保存先のファイルが選べるので「Desktop」または「デスクトップ」にしましょう。
  • PDFが出力されます。
  • デスクトップを探すと、PDFが見つかります。
  • 出力されたPDFは(一部を切り取ると)次のようなものです。ここまで出来なかった人は「1. 準備」で何かをミスっている可能性があります。↓
画像2:R Markdownを開いたときに出てくる初期文書

3. Markdownで文書作成

(1)ほぼ白紙の文章を作る

 一度、R Markdownに書かれたすべてのコードを消してください。そして、次のコードをコピペしてください。「—」で囲まれた部分はyamlヘッダと言います。

---
title: "タイトル"
author: "著者"
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \XeTeXlinebreaklocale "ja"
  - \XeTeXlinebreakskip=0pt plus 1pt
  - \XeTeXlinebreakpenalty=0
mainfont: ipaexm.ttf
---

 日本語の文章が書けます

 ↑もう一度「Knit」してください。なお、「—」で囲まれた部分をyamlヘッダすると「タイトル」「著者」「日本語の文章が書けます」とだけ記されたPDFが出力されます。↑

(2)yamlヘッダ

 コードの説明をしましょう。まず「—」で囲まれた部分をyamlヘッダと言います。ここは「タイトル」「著者」「出力形式」「フォント」など、文章の基本となる情報をいれるところです。特に重要なのは、output以下です。興味のある人は下を読んでください。↓

output: #出力形式
  pdf_document: #PDFで出力
    latex_engine: xelatex #LaTeXの中のxelatexを使う

header-includes: #日本語でも自動折り返しできるようにする
  - \XeTeXlinebreaklocale "ja"
  - \XeTeXlinebreakskip=0pt plus 1pt
  - \XeTeXlinebreakpenalty=0

mainfont: ipaexm.ttf #明朝体指定(フォントによっては自動折り返しできない)

(3)Markdownを書く

 R Markdownのコードを全部消してから、次のコードをコピペしてください。

---
title: "タイトル"
author: "著者"
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \XeTeXlinebreaklocale "ja"
  - \XeTeXlinebreakskip=0pt plus 1pt
  - \XeTeXlinebreakpenalty=0
mainfont: ipaexm.ttf
---

# 第1章 基本文法 

## 1節 見出し 
 「#」「##」で見出しを作成できる。「#」の直前に文字やスペースがあると、見出しが作れない。
 
## 失敗した見出しの例 

## 2節 改行
 改行は半角のスペースを2個続けると→  
 できます。

## 3節 数式
 数式はドルマーク2つで挟んでください。LaTeXでの数式表現が使えます。$e = mc^2$

## 4節 コメント
 下のコードを打つことで、コメントを挿入できます。  
<!--
コメントです。コードだと見えます。
-->
 ↑PDFでは上のコードは見えません。

# 第2章 Rコードを反映させる

 上を「Knit」すると次のPDFが出力されます。上手くいかなかった人は、yamlヘッダーを見直してください。↓

画像3:直前のコードを実行すると出力されるPDF

(4)お役立ちR Markdown情報

 LaTeXを使って数式を書きたい人は、LaTeXコードまとめをご覧ください。

 本文中に次の表現を入れると、脚注を付け足せます。

 R Markdownにも脚注[^1]をつける方法がある。脚注はそのページ下部に小さく記される。

\[^1] 脚注とは、本文の下部に載せる補足情報。意味、解釈、出典が記される。学生のレポートについていると一気に「まともなレポートに見える」という装飾効果もある。

4. R MarkdownにRの分析結果を載せる

(1)Rの結果を載せる

 一度、R Markdownに書かれたすべてのコードを消してください。そして、次のコードをコピペしてください。↓

---
title: "タイトル"
author: "著者"
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \XeTeXlinebreaklocale "ja"
  - \XeTeXlinebreakskip=0pt plus 1pt
  - \XeTeXlinebreakpenalty=0
mainfont: ipaexm.ttf
---

 点々の間にコードを入れると、チャンクというものになります。コードはこのチャンクの中に入れて実行します。下のコードでは、データセットのパッケージであるwooldrigeをR Markdown内で呼び出し、データセットsavingの冒頭6行を表示しています。残念ながらチャンクに日本語コメントを入れると消えてしまいます。
```{r}
library(wooldridge)
head(saving)
```

 そして、「Knit」すると、次のPDFが出力されます。注目すべきは、コードが文章中に入っており、結果も出力されている点です。これでRの分析結果をレポートにする手間がとても省けるわけです。

画像4:直前のコードを実行すると出力されるPDF

(2)回帰分析の結果をPDFに出力する

 さて、回帰分析の結果を出力しましょう。一度、R Markdownに書かれたすべてのコードを消してください。そして、次のコードをコピペしてください。↓

---
title: "タイトル"
author: "著者"
output:
  pdf_document:
    latex_engine: xelatex
header-includes:
  - \XeTeXlinebreaklocale "ja"
  - \XeTeXlinebreakskip=0pt plus 1pt
  - \XeTeXlinebreakpenalty=0
mainfont: ipaexm.ttf
---
# パッケージの読み込み
 パッケージの読み込みでは、include=FALSEにすると余計なものがPDFに載りません。  
 wooldridgeはデータセットのパッケージです。stargazerは回帰分析の結果を綺麗にまとめてくれるバッケージです。表示はありませんが、ここでlibraryが実行されています。↓
```{r , include=FALSE}
library(wooldridge)
library(stargazer)
```

# 図表の出力
 図表の出力では、results='asis'にしてください。message=FALSEにすると余計なものがPDFに載りません。  
 wooldridgeにあるデータセットsavingを用いた回帰分析lm()をしています。lm1では所得incを目的変数、教育年数educを説明変数にしています。lm2では所得incを目的変数Y、教育年数educと年齢ageを説明変数にしています。stargazerでは、lm1とlm2の結果を、latexで出力しています。header = FALSEにしないとエラーがおきます。
```{r, results='asis', message=FALSE}
lm1 <- lm(inc ~ educ, data = saving) 
lm2 <- lm(inc ~ educ + age, data = saving)
stargazer(lm1, lm2, type = "latex" ,header = FALSE)
```

 そして、「Knit」すると、次のPDFが出力されます。感動です。コードの詳しい説明は、日本語部分を読んでください。

画像5:直前のコードを実行すると出力されるPDF

5. さいごに

 おめでとうございます。これでRStudioにてデータの分析からレポートの作成まで一貫した作業ができるようになりました。あとは、オリジナルなデータのインポートを学べば「しまうまのRでデータ分析入門」は終わりです!

 次回は「6講(最終回):Rにオリジナルなデータを読み込ませる

コメント欄 お気軽にコメントをお寄せください!

タイトルとURLをコピーしました