R初学者のためのtidyverse100本ノック

# はじめに
データ分析の書籍を読んでいるとRで書かれていて解読に困ったことはありませんか。
本コンテンツでは、多くの書籍で使われている**tidyverseやggplot2**を主に取り扱っています。

この**tidyverseやggplot2**は、データを加工・可視化する際に処理を順番に記載する直感的な記述法であり、データ分析の非常に強力な手助けになることでしょう。

なお、このコンテンツは[Python初学者のためのPandas100本ノック](https://qiita.com/kunishou/items/bd5fad9a334f4f5be51c)の作成者である[クニえもんさん](https://twitter.com/kun1em0n)の承諾の元、似た形式で作成しております。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|可視化|ファセット機能|![uploading...0]()

[設問と解答の一覧はこちら](https://github.com/nekobo01/tidyverse100/blob/main/tidyverse100(all_answer_displayed).R)

# 利用方法
RStudioをまだインストールしていない方は、以下の記事を参考に、まずRStudioを自身のPCにインストールして下さい。

windowsの方 - [RStudioのインストール](https://syunsuke.github.io/r_install_guide_for_beginners/04_installation_of_RStudio.html)
Macの方 - [MacにRとR Studioをインストール](https://qiita.com/azzeten/items/1031c788ed093d3b3946)

# ディレクトリ構成
tidyverse100.R
　├ 「問題」「問題+解答・解説」のRファイルが格納
　└ input/ …　問題で使用するデータセットが格納

※ZIPファイルから展開した後に、このディレクトリ構成は変えないで下さい（上手く動作しなくなります）。
※フォルダ名に日本語が含まれる場合、RStudioが起動しない場合があります。
　詳しくはこちらの[記事](https://syunsuke.github.io/r_install_guide_for_beginners/06_check_before_installation.html)を参考ください。

# ダウンロード
コンテンツはGitHubよりダウンロードできます。

https://github.com/nekobo01/tidyverse100.git

# その他
・個人・法人を問わず誰でも使用可能です。
・本コンテンツの再配布・改編はご遠慮ください。
・本コンテンツの内容に関して、予告なく変更・削除等が行われることがあります。
・本コンテンツに関するご意見、ご要望、誤り等ございましたら[ツイッター](https://twitter.com/nekobo_01)または本記事内のコメント欄までお気軽にご連絡ください。
・データサイエンス関連のツイートもたまにしているのでよければフォローお願いします。