tidyverseはR言語でのデータ分析を行う際に便利なパッケージの集まりです。 統一された設計思想のもとに、ファイルの読み書き(readr)からデータ操作(dplyr、tidyr)、可視化(ggplot2)などのパッケージを提供しています。2016年の登場から度重なるアップデートを経て、現在の最新バージョンは2.0.0と成熟期を迎えている状態です。 国内外でtidyverseや関係するパッケージの解説は豊富に存在します。一方でRでの関数型プログラミングを補助するpurrrパッケージなど、他と比べて焦点を当てられる機会が少ないパッケージ・関数も見受けられます。この要因として、tidyverseの更新速度に追いつけず、新しい機能について十分に身につけることができないことがあると私は考えています。

この資料では、tidyverseのさらなる活用を目指す人を対象に、これらの使い方を解説するとともに、より効率的に作業を進めるためのノウハウを伝授することを目指しています。具体的には、tidyverseのコアパッケージでるdplyrtidyrpurrrを中心に扱います。また、それ以外のtidyverseパッケージ群を組み合わせた、発展的な話題を紹介します。最後に、rlangというR言語におけるプログラミングのフレームワークをtidyverseの各パッケージと組みあわせることで、tidyverseの外の世界に踏み出す準備を整えます。

tidyverseとは何か?そこから知りたい人は概論をご覧ください。なお、紹介するパッケージの基本的な情報については既存の資料を参考にしてください。

tidyverseパッケージの読み込み

資料全体を通してtidyverseパッケージを利用します。次のコマンドでtidyverseに含まれる各パッケージを利用可能な状態にしておきましょう。なおパッケージのインストールはinstall.packages("tidyverse")で行われます1

library(tidyverse)
── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr     1.1.2     ✔ readr     2.1.4
✔ forcats   1.0.0     ✔ stringr   1.5.0
✔ ggplot2   3.4.3     ✔ tibble    3.2.1
✔ lubridate 1.9.2     ✔ tidyr     1.3.0
✔ purrr     1.0.2     
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag()    masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

tidyverseパッケージの最新版は、2023年8月27日現在、v2.0.0です。この資料でも最新版のv2.0.0を利用します。

主な対象者

  • dplyrやggplot2、tidyrについての基礎知識がある
  • tidyverseに含まれるパッケージの関数の知識を更新したい … dplyr、tidyr、purrrの情報をアップデート
  • データフレームだけでなく、リストの操作も快適に行えるようになりたい… purrrについての理解を深める
  • 繰り返しの処理を書きがち、コードを簡潔に記述したい… purrrで効率的な処理!
  • 関数を書くことがない、あるいは少ない… rlangを使った関数が書けるように(目標)

目次

謝辞

このプロジェクトを含め、私のOSSに携わる活動を支援してくださっているGitHubスポンサーの方々に、感謝申し上げます。 活動を支援するためにGitHubスポンサーに加わっていただける方はこちらのリンクから登録をお願います。

脚注

  1. GitHubリポジトリからこの資料をクローンまたはダウンロードした方はrenvパッケージを使ってパッケージを復元することが可能です。↩︎