はじめに
データ分析の書籍を読んでいるとRで書かれていて解読に困ったことはありませんか。
本コンテンツでは、多くの書籍で使われているtidyverseやggplot2を主に取り扱っています。
このtidyverseやggplot2は、データを加工・可視化する際に処理を順番に記載する直感的な記述法であり、データ分析の非常に強力な手助けになることでしょう。
なお、このコンテンツはPython初学者のためのPandas100本ノックの作成者であるクニえもんさんの承諾の元、似た形式で作成しております。pythonでのデータ分析に興味のある方はこちらも是非ご覧になってください。
tidyverse100本ノックの概要
・Rファイルに記載された、tidyverseやggplot2に関する設問100問を解いていきます
・「問題のみ版」「問題+解答・解説版」の2種類を用意しています。
問題内容
| No. | 分類 | テーマ |
|---|---|---|
| 1 | 基礎 | csvファイルの読み込み |
| 2 | 基礎 | xlsxファイルの読み込み |
| 3 | 基礎 | dfのコピー |
| 4 | 基礎 | dfの確認 |
| 5 | 基礎 | 基本データ型/データ構造型の確認 |
| 6 | 基礎 | データ構造型の確認 |
| 7 | 基礎 | データ型の変換 |
| 8 | 基礎 | dfサイズの確認 |
| 9 | 基礎 | カラム名の一覧表示 |
| 10 | 基礎 | ベクトルから不要な要素の削除 |
| 11 | 基礎 | 変数の一括削除 |
| 12 | 基礎 | 関数の詳細確認 |
| 13 | 基礎 | 関数を定義する |
| 14 | 基礎 | data.frameの生成 |
| 15 | 基礎 | ショートカット |
| 16 | 抽出 | 列の抽出 |
| 17 | 抽出 | 列の抽出(*selectは使わない) |
| 18 | 抽出 | 指定列以外の抽出 |
| 19 | 抽出 | 複数列の抽出 |
| 20 | 抽出 | 条件を満たすデータの抽出 |
| 21 | 抽出 | 条件を満たさないデータの抽出 |
| 22 | 抽出 | 複数条件をいずれも満たすデータの抽出 |
| 23 | 抽出 | 複数条件のいずれかを満たすデータの抽出 |
| 24 | 抽出 | 複数条件のいずれも満たさないデータの抽出 |
| 25 | 抽出 | 特定のカラムに任意の文字列が含まれるデータの抽出 |
| 26 | 抽出 | カラム名に任意の文字列が含まれるデータの抽出(ヘルパ関数) |
| 27 | 抽出 | 特定の文字列が含まれるデータの抽出 |
| 28 | 抽出 | 上位n・下位nの抽出 |
| 29 | 抽出 | 特定のデータ型の列の抽出 |
| 30 | 加工 | 不要列の削除(selectを用いた削除) |
| 31 | 加工 | 不要列の削除(NULLを用いた削除) |
| 32 | 加工 | dfの要素の上書き |
| 33 | 加工 | カラムの追加 |
| 34 | 加工 | 任意列の値を条件とした新カラムの追加 |
| 35 | 加工 | 任意の列の値を置換する |
| 36 | 加工 | 場合分けした値の置換 |
| 37 | 加工 | 丸め表示 |
| 38 | 加工 | カラム名の変更 |
| 39 | 加工 | 並び替え |
| 40 | 加工 | 転置 |
| 41 | 重複処理 | ユニークな要素の確認 |
| 42 | 重複処理 | ユニークな要素数の確認 |
| 43 | 重複処理 | カラム別のユニークな要素数の確認 |
| 44 | 重複処理 | ユニークな要素とその出現回数の確認 |
| 45 | 重複処理 | 重複の削除 |
| 46 | 欠損値処理 | NAの個数の確認 {base機能} |
| 47 | 欠損値処理 | NAの個数の確認 {library(skim)} |
| 48 | 欠損値処理 | NAに置換する |
| 49 | 欠損値処理 | 欠損値の補完(文字列) |
| 50 | 欠損値処理 | 欠損値の補完(数値) - グループ平均値代入法 |
| 51 | 欠損値処理 | 欠損値の補完(直前の値を採用) - LOCF法 |
| 52 | 欠損値処理 | 欠損値を含むデータの削除 - リストワイズ法 |
| 53 | 文字列の操作 | 大文字に変換 |
| 54 | 文字列の操作 | 文字列の置換 |
| 55 | 文字列の操作 | 文字列の一部削除 |
| 56 | 文字列の操作 | 文字列の結合 |
| 57 | マージと連結 | 左結合 |
| 58 | マージと連結 | 内部結合 |
| 59 | マージと連結 | 下に結合 |
| 60 | マージと連結 | 右に結合 |
| 61 | ラベリング | ラベルエンコーディング |
| 62 | ラベリング | One-hotエンコーディング |
| 63 | ラベリング | 正規化 |
| 64 | ラベリング | min-MAXスケーリング(0-1) |
| 65 | 集計・統計 | 要約統計量の確認 |
| 66 | 集計・統計 | 要約統計量の確認 ※library(skim)を使用 |
| 67 | 集計・統計 | group_by(合計) |
| 68 | 集計・統計 | 平均値 |
| 69 | 集計・統計 | 中央値 |
| 70 | 集計・統計 | 最大値、最小値 |
| 71 | 集計・統計 | 標準偏差、分散 |
| 72 | 集計・統計 | 相関係数 |
| 73 | 集計・統計 | パーセンタイル |
| 74 | 集計・統計 | 要素別の頻度カウント |
| 75 | 集計・統計 | 最頻値 |
| 76 | 集計・統計 | データの縦持ち(tidy)⇒横持ち |
| 77 | 集計・統計 | tidy data形式への変換(横持ち⇒縦持ち) |
| 78 | 集計・統計 | window関数- row_number |
| 79 | 集計・統計 | window関数- lag |
| 80 | 可視化 | ヒストグラム |
| 81 | 可視化 | 密度推定曲線 |
| 82 | 可視化 | 複数のヒストグラム |
| 83 | 可視化 | 棒グラフ |
| 84 | 可視化 | 棒グラフの並列表示 |
| 85 | 可視化 | 積み上げ棒グラフ(対 集計済データ) |
| 86 | 可視化 | 横棒グラフ |
| 87 | 可視化 | 横棒グラフ |
| 88 | 可視化 | 散布図の一括表示 |
| 89 | 可視化 | 散布図 |
| 90 | 可視化 | ヴァイオリンプロット |
| 91 | 可視化 | 棒グラフ+散布図 |
| 92 | 可視化 | 散布図のラベリング |
| 93 | 可視化 | 装飾 |
| 94 | 可視化 | 相関ヒートマップ |
| 95 | 可視化 | 箱ひげ図 |
| 96 | 可視化 | 補助線の追加 |
| 97 | 可視化 | 回帰直線の追加(特定の範囲の切り出し) |
| 98 | 可視化 | 回帰直線の追加(特定の範囲の拡大表示) |
| 99 | 可視化 | 複数の回帰直線を追加 |
| 100 | 可視化 | ファセット機能 |
利用方法
RStudioをまだインストールしていない方は、以下の記事を参考に、まずRStudioを自身のPCにインストールして下さい。
windowsの方 - RStudioのインストール
Macの方 - MacにRとR Studioをインストール
ディレクトリ構成
tidyverse100.R
├ 「問題」「問題+解答・解説」のRファイルが格納
└ input/ … 問題で使用するデータセットが格納
※ZIPファイルから展開した後に、このディレクトリ構成は変えないで下さい(上手く動作しなくなります)。
※フォルダ名に日本語が含まれる場合、RStudioが起動しない場合があります。
詳しくはこちらの記事を参考ください。
ダウンロード
コンテンツはGitHubよりダウンロードできます。
その他
・個人・法人を問わず誰でも使用可能です。
・本コンテンツの再配布・改編はご遠慮ください。
・本コンテンツの内容に関して、予告なく変更・削除等が行われることがあります。
・本コンテンツに関するご意見、ご要望、誤り等ございましたらツイッターまたは本記事内のコメント欄までお気軽にご連絡ください。
・データサイエンス関連のツイートもたまにしているのでよければフォローお願いします。