1  編集前記・技術注記

本章では、このハンドブックの制作におけるアプローチの哲学、スタイル、具体的な編集上の留意項目について説明します。

1.1 疫学や公衆衛生に関わる業務のための R

目的: 疫学業務や研究で頻繁に直面する課題に対する対処法の実例を扱い、素早く使用できる R のリファレンスマニュアルとしてオンラインでもオフラインでも機能する

本書の使い方

  • 左側にある目次を参照する、又は検索ボックスを使用します。
  • 各章にあるコードをコピーしたい場合は、「コピー(copy)」アイコンをクリックしてください。
  • 例題で使用されている サンプルデータ を使用すると、本書の内容をお手元の環境で実践しながら学ぶことができます。

オフライン版の使い方

ハンドブックとデータのダウンロード の章をご覧ください。

1.2 アプローチとスタイル

本書の潜在的な読者層は広いと考えています。R を初めて使う人はもちろん、より良い R の使い方やそのヒントを探している経験豊富な R ユーザーにもきっと役立ててもらえるはずです。そのため、本書は理解しやすく、簡潔である必要があり、R に慣れていない人でもコードを適用し、コードが何をしているのかをたどることができるよう、十分な説明を行うことを心がけました。

その他のポイント

  • 本書は、比較的簡単な事例を用いたコードの参考書であり、R やデータサイエンスの完全な教科書ではありません。
  • 本書は、応用疫学で R を使用するためのハンドブックであり、応用疫学の手法や科学に関するマニュアルではありません。
  • 本書は、継続的に更新されていく文書を目指しています。それぞれのタスクに最適な R のパッケージは頻繁に変わるため、このハンドブックでどのパッケージの使用を重視するかに関する議論を歓迎します。

R パッケージ

多くの選択肢

R の学習で最も難しいことの 1 つは、特定のタスクに対してどの R パッケージを使うべきかを把握することです。あるタスクで悪戦苦闘しているうちに、「あれ、1 つのコマンドで全部やってくれる R パッケージがあるじゃないか!」と気づくことはよくあります。

このハンドブックでは、各タスクを完了するために少なくとも 2 つの方法を用いるようにしています。1 つは試行錯誤を重ねた方法(おそらくbase R か tidyverse パッケージ)、もう 1 つはその目的のためにカスタマイズされた特別な R パッケージを使用する方法です。パッケージがダウンロードできない、あるいはうまく動作しない場合に備えて、いくつかの選択肢を用意しておきたいと思います。

使用するパッケージの選択にあたっては、一般的な利用者によってテストされ吟味されたもの、典型的な作業内で使用するパッケージの数が最小であるもの、安定しているもの(あまり頻繁に変更されない)、そしてシンプルかつ簡単にタスクを達成するパッケージと手法を優先的に選びました。

このハンドブックでは、一般的に tidyverse の R パッケージや関数を優先的に紹介します。tidyverse はデータサイエンスのために設計された複数の R パッケージを集めたものであり、含まれているパッケージは、基礎となる文法やデータ構造を共有しています。すべての tidyverse パッケージは、tidyverse パッケージを介してインストールまたは読み込むことが可能です。詳しくは tidyverse のウェブサイトをご覧ください。

また、本書の読者の中には、追加のパッケージをダウンロードするための信頼できるインターネット環境を利用できない方がいることを想定し、必要に応じて base R(R をインストールしたときに付属しているパッケージや関数)を用いた手法も紹介しています。

関数とパッケージの明示的な関連付け

R のチュートリアルで関数がコードで表示されても、それがどのパッケージのものかわからないとイライラすることがよくありますね! 私たちはこのような状況を避けようとしています。

本書では、説明する際にパッケージ名は太字で書き(例:dplyr)、関数は次のように書いています: mutate() 。また、関数がどのパッケージから来たものかを明示するために、文章内でパッケージを参照するか、dplyr::mutate() のようにコード内でパッケージを明示するようにしています。冗長に見えるかもしれませんが、あえてそのように書いています。

パッケージや関数について詳しく知りたい方は、Rの基礎 の章をご覧ください。

コードのスタイル

このハンドブックでは、以下の理由に基づき、頻繁に「改行」をいれて、コードを「縦長」に表示しています。

  • コードの細かい点について、コードのすぐ隣で # を使って説明コメントを書くことができる
  • 一般的に、長い(縦長の)コードの方が読みやすい
  • 狭い画面でも読みやすい(横スクロールが必要ない)
  • インデントにより、どの引数がどの関数に属しているかがわかりやすい

以下に例を挙げます。

linelist %>% 
  group_by(hospital) %>%  # 病院ごとのグループの列
  slice_max(date, n = 1, with_ties = F) # 日付が同じ場合は最初の行を採用する

本書のスタイルに従うと、上のコードは、次のように書きます。

linelist %>% 
  group_by(hospital) %>% # 病院ごとのグループの列
  slice_max(
    date,                # グループごとに日付の最大値を持つ行を保持する 
    n = 1,               # 最も上段の 1 列を保持する 
    with_ties = F)       # 日付が同じ場合は最初の行を採用する

R コードは通常、改行やインデントの影響を受けません。コードを書く際は、カンマの後で改行すると、自動的なインデントが適用されます。

また、スペースをたくさん使っている理由は、その方が読みやすいからです(例えば、n=1 ではなく n = 1 )。読み手に親切なコードを書きましょう!

用語解説

このハンドブックでは、一般的に「変数(variables)」や「観測値(observations)」ではなく「列(columns)」や「行(rows)」といった用語を使用します。この 「tidy data(データの前処理)」 の入門書で説明されているように、ほとんどの疫学統計データセットは、行(rows)、列(columns)、値(values)の構造で構成されています。

変数には、同じ基本属性(年齢層、転帰、発症日など)を測定した値が含まれます。観測値には、同じ単位(人、部位、実験試料など)で測定されたすべての値が含まれます。したがって、列や行と比較して、これらを具体的に定義することは困難であるでしょう。

「整理された」データセットでは、各列が変数、各行が観測値、各セルが 1 つの値です。しかし、あなたが扱うデータセットの中には、この型に当てはまらないものもあります。例えば、「横長」形式のデータセットでは、変数が複数の列にまたがっていることがあります(データの縦横変換 の章で例をご覧ください)。同様に、観測値も複数の行にまたがって分割されていることもあります。

このハンドブックの大部分は、データの管理と変換に関するものなので、抽象的な観測値や変数よりも、行や列といったより具体的なデータ構造に言及する方が適切です。例外は主にデータ解析の章で生じ、そこでは変数や観測値への言及が多くなります。

注釈

ここでは、このハンドブックで書かれている注釈の種類を紹介します。

注釈:これは注釈です
ヒント:これはヒントです
注意:これは注意事項です
警告:これは警告です

1.3 編集上の決定事項

以下では、パッケージや関数の選択に関して、編集上の重要な決定事項を記載しています。これらについて異なる意見がある場合や、新しいツールをご提供いただける場合は、こちらの Github ページに参加しメッセージをお送りください。

パッケージ、関数、その他の編集上の決定事項の表

項目 候補パッケージ・関数 推奨パッケージ・関数 簡単な説明
一般的なコーディング方法 tidyverse, data.table, base tidyverse を基本とし、data.table については 1 つの章を設け、インターネットを利用できない読者のために base の代替方法にも言及 tidyverse 読みやすいコードや一般性の高いコードの作成のために使用される(一番教えられているパッケージ
パッケージの読み込み library(),install.packages(), require(), pacman pacman ほとんどのパッケージのインストールと読み込みにおいて、コードの短縮と簡素化を実現する
インポートとエクスポート rio, 他にも多数存在 rio 多くのファイルタイプに対応する手軽さ
要約統計のためのグループ化 dplyr group_by(), stats aggregate() dplyr group_by() tidyverse を重視する方針と一貫している
縦横変換 tidyr (pivot 系関数), reshape2 (melt/cast), tidyr (spread/gather) tidyr (pivot 系関数) reshape2 は廃止され、tidyr は 1.0.0 版から pivot 系関数を使用
列名のクリーニング linelist, janitor janitor パッケージの集約を重視
時間データの取り扱い lubridate, aweek, tsibble, zoo lubridate 一般的なものと、特定のケースに対応するものとがある lubridate の柔軟性、一貫性、パッケージ維持の見通し
ggplot ラベル labs(), ggtitle()/ylab()/xlab() labs() すべてのラベルを一箇所でシンプルに修正
因子型への変換 factor(), forcats forcats さまざまな関数も同じコマンドで因子に変換
流行曲線(エピカーブ) incidence, ggplot2, EpiCurve incidence2 を素早く、ggplot2 を詳細に 信頼性
結合処理 paste(), paste0(), str_glue(), glue() str_glue() stringr 内にあり paste 関数よりもシンプルな構文

1.4 主な修正履歴

日付 主な変更点
2021 年 5 月 10 日 1.0.0 版の公開
2022 年11 月 20 日 1.0.1 版の公開

更新情報 1.0.1 版は以下の変更が適用されています。

  • R のバージョンを 4.2 に更新しました
  • データクリーニングと主要関数 : {linelist} パッケージから {matchmaker} パッケージへの変更、case_when() の例示コードから不溶な行を削除
  • 日付型データ : {linelist} パッケージの関数 guess_date() から {parsedate} パッケージの関数 parse_date() への変更
  • データの縦横変換 : pivot_wider() の id_cols= 引数の小変更
  • 標本調査データ分析 : plot_age_pyramid() から age_pyramid() への変更、サンキー図(沖積図)をプロットするコードの小変更
  • ヒートマップ : agg_weeks オブジェクト生成コードに ungroup() を追加
  • 動的な図の作成 : agg_weeks オブジェクト作成時に tidyr::expand() が意図通りに機能するために ungroup() を追加
  • 時系列分析とアウトブレイクの検出 : すべての trending::fit() と predict() 内のオブジェクトに対して data.frame() を追加
  • 複数回答データの分析 : case_when() から ifelse() への変更、データオブジェクト作成時に across() 引数を追加
  • 感染連鎖 : より新しいバージョンの {epicontacts} パッケージを利用するように変更

1.5 謝辞および注意事項

このハンドブックは、世界各地の疫学者や疫学実務者の協力により、地方、州、県、国の各保健機関、世界保健機関(World Health Organization; WHO)、国境なき医師団(MSF)、病院や学術機関などでの経験をもとに作成されています。

本ハンドブックは、特定の団体から公認を得たものではありません。正確性を期していますが、本書の内容を保証するものではありません。

作成者

編集者: Neale Batra

著者: Neale Batra, Alex Spina, Paula Blomquist, Finlay Campbell, Henry Laurenson-Schafer, Isaac Florence, Natalie Fischer, Aminata Ndiaye, Liza Coyer, Jonathan Polonsky, Yurie Izawa, Chris Bailey, Daniel Molling, Isha Berry, Emma Buajitti, Mathilde Mousset, Sara Hollis, Wen Lin

査読者および支援者: Pat Keating, Amrish Baidjoe, Annick Lenglet, Margot Charette, Danielly Xavier, Marie-Amélie Degail Chabrat, Esther Kukielka, Michelle Sloan, Aybüke Koyuncu, Rachel Burke, Kate Kelsey, Berhe Etsay, John Rossow, Mackenzie Zendt, James Wright, Laura Haskins, Flavio Finger, Tim Taylor, Jae Hyoung Tim Lee, Brianna Bradley, Wayne Enanoria, Manual Albela Miranda, Molly Mantus, Pattama Ulrich, Joseph Timothy, Adam Vaughan, Olivia Varsaneux, Lionel Monteiro, Joao Muianga

日本語版翻訳者: 苅谷 瞳, 西田 典充, 齋藤 雄介, 馬場 美彦, 麸沢 美裕, 髙 勇羅, 藤井 亮輔, 浅野 裕太, 小山 佑奈, 山浦 礼子, 谷 拓朗, 川添 百合香, 中村 星斗, 西川 寛来, 長島 健悟, 茅野 大志, 伏見 淳, 平 友樹, 佐藤 俊太朗, 山口 征啓, 中根 優里, 堺 琴美, 石原 裕也

図版制作者: Calder Fong

資金支援

このハンドブックは、主にボランティアによってのべ数千時間をかけて作られました

このハンドブックは、実地疫学研修プログラム(Field Epidemiology Training Programs; FETPs)の世界的ネットワークである TEPHINET より、新型コロナウイルス感染症のための緊急助成金(COVID-19 emergency capacity-building grant)による支援を受けました。

運営面では、EPIET 同窓生の会(EPIET Alumni Network; EAN)、とりわけ Annika Wendland から多大なる支援を受け、ここに謝意を示します。EPIET とは、介入疫学トレーニングのための欧州プログラム(European Programme for Intervention Epidemiology Training)の略称です。

本ハンドブックの作成にあたり、国境なき医師団(MSF)アムステルダム運営センター(Operational Centre Amsterdam; OCA)からもご支援いただき、ここに謝意を表します。

本書は、国際保健タスクフォース(The Task Force for Global Health)のプログラムである TEPHINET を通じて、米国疾病対策センター(Centers for Disease Control and Prevention; CDC)から資金提供を受けた協力契約番号 NU2GGH001873 により作成されました。本書の内容は著者の責任によるものであり、CDC、米国保健福祉省(Department of Health and Human Services)、The Task Force for Global Health, Inc.またはTEPHINET の公式見解を必ずしも示すものではありません。

インスピレーション

本書の内容を作成・開発するための知識の元になった多くのチュートリアルやドキュメントは、各章のページでクレジットされています。

以下の資料が本書に多大なインスピレーションを与えてくれた主な参考資料は、以下の通りです。

The “R4Epis” project (MSF と RECON による共同プロジェクト)
R Epidemics Consortium (RECON)
R for Data Science book (R4DS)
bookdown: Authoring Books and Technical Documents with R Markdown
Netlify によってこのウェブサイトはホストされています。

1.6 利用規約・投稿規約

ライセンス

Creative Commons License Applied Epi Incorporated, 2021
本書は、 クリエイティブ・コモンズ 表示 - 非商用 - 継承 4.0 国際ライセンス(Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License)に基づき、Applied Epi Incorporated によってライセンスされています。

授業や疫学者養成研修プログラムの提供者は、本ハンドブックの使用や翻案について、お気軽にお問い合わせください。(email contact@appliedepi.org).

引用形式

Batra, Neale, et al. The Epidemiologist R Handbook. 2021. DOI

コントリビューション

本書の内容に貢献したい方は、まず Github のイシュー(Issues) またはメールにてご連絡ください。現在、本書の更新スケジュールやコントリビューターガイドを作成中です。

なお、本プロジェクトは、コントリビューター行動規約(Contributor Code of Conduct)と共に公開されていることにご注意ください。本プロジェクトに貢献すると、その規約に従うことに同意したことになります。

1.7 バージョン情報 (R・RStudio・パッケージ)

このハンドブックで使用した R、RStudio、R パッケージのバージョンに関する情報を以下に示します。

sessioninfo::session_info()
─ Session info ───────────────────────────────────────────────────────────────
 setting  value
 version  R version 4.6.0 (2026-04-24)
 os       Ubuntu 26.04 LTS
 system   x86_64, linux-gnu
 ui       X11
 language en_US:en
 collate  en_US.UTF-8
 ctype    en_US.UTF-8
 tz       Etc/UTC
 date     2026-10-05
 pandoc   3.7.0.2 @ /usr/bin/ (via rmarkdown)
 quarto   1.9.38 @ /usr/local/bin/quarto

─ Packages ───────────────────────────────────────────────────────────────────
 package     * version date (UTC) lib source
 cli           3.6.6   2026-04-09 [1] RSPM
 digest        0.6.39  2025-11-19 [1] RSPM
 evaluate      1.0.5   2025-08-27 [1] RSPM
 fastmap       1.2.0   2024-05-15 [1] RSPM
 htmltools     0.5.9   2025-12-04 [1] RSPM
 htmlwidgets   1.6.4   2023-12-06 [1] RSPM
 jsonlite      2.0.0   2025-03-27 [1] RSPM
 knitr         1.51    2025-12-20 [1] RSPM
 otel          0.2.0   2025-08-29 [1] RSPM
 rlang         1.2.0   2026-04-06 [1] RSPM
 rmarkdown     2.31    2026-03-26 [1] RSPM
 sessioninfo   1.2.4   2026-06-04 [1] RSPM
 xfun          0.59    2026-06-19 [1] RSPM
 yaml          2.3.12  2025-12-10 [1] RSPM

 [1] /opt/R/4.6.0/lib/R/library

──────────────────────────────────────────────────────────────────────────────