🐱 MechaTora 開発ブログ

R言語Tidyverseで始めるデータ分析入門|非エンジニアでも3ヶ月でマスターできた方法

R言語 Tidyverse データ分析 初心者向け 学習方法

はじめに:なぜR言語とTidyverseを学んだのか

私は元々、社会保険労務士として人事・労務の実務に従事していました。エクセルでの集計作業やデータ分析が日常業務の大半を占めていましたが、「もっと効率的にデータを扱いたい」「統計的な裏付けをもって提案したい」という思いから、R言語の学習を始めました。

プログラミング未経験の状態からスタートしましたが、わずか3ヶ月で実務レベルのデータ分析ができるようになりました。その鍵となったのが「Tidyverse」というパッケージ群です。

本記事では、私が実際に辿った学習プロセスと、Tidyverseの主要パッケージの使い方を初心者目線で解説します。

🎯 この記事で学べること

  • R言語とTidyverseの基本概念
  • dplyrを使ったデータ操作(filter, select, mutate, summarize)
  • ggplot2による美しいグラフ作成
  • tidyrでのデータ整形(pivot_longer, pivot_wider)
  • 非エンジニアでも挫折しない学習方法

Tidyverseとは?データ分析を劇的に効率化するパッケージ群

Tidyverseは、R言語でデータ分析を行う際の「標準ツールキット」と呼べる存在です。以下の8つの主要パッケージで構成されています。

  • dplyr:データ操作(フィルタリング、集計、結合など)
  • ggplot2:データ可視化(グラフ作成)
  • tidyr:データ整形(縦持ち・横持ち変換など)
  • readr:データ読み込み(CSV、TSVなど)
  • purrr:関数型プログラミング
  • tibble:モダンなデータフレーム
  • stringr:文字列操作
  • forcats:カテゴリカルデータ(因子)操作

これらをまとめてインストールできるのがTidyverseの大きな魅力です。

# Tidyverseのインストール(初回のみ) install.packages("tidyverse") # ライブラリの読み込み library(tidyverse)
💡 初心者へのアドバイス: 最初はdplyr、ggplot2、tidyrの3つに集中しましょう。この3つだけで実務の8割はカバーできます。

dplyr:データ操作の5つの基本動詞

dplyrは「データ操作のための文法」を提供してくれます。特に重要な5つの関数(動詞)をマスターすれば、ほとんどのデータ操作が可能になります。

1. filter():行をフィルタリング

特定の条件に合致する行だけを抽出します。例えば、売上データから「2025年1月」のデータだけを抽出したい場合。

# 売上データから2025年1月のデータを抽出 sales_data %>% filter(year == 2025, month == 1) # 売上が100万円以上のデータのみ sales_data %>% filter(sales >= 1000000)

2. select():列を選択

必要な列だけを選び出します。大量の列があるデータから、分析に必要な列だけを取り出すときに便利です。

# 名前、年齢、売上の3列だけを選択 sales_data %>% select(name, age, sales) # 特定の列を除外 sales_data %>% select(-id, -created_at)

3. mutate():新しい列を作成

既存の列を使って新しい列を作成します。例えば、売上と利益率から「利益額」を計算する場合。

# 売上×利益率で利益額を計算 sales_data %>% mutate(profit = sales * profit_rate) # 複数の列を一度に作成 sales_data %>% mutate( profit = sales * profit_rate, tax = profit * 0.3, net_profit = profit - tax )

4. summarize():データを集計

データを要約統計量に集約します。平均、合計、最大値などを計算できます。

# 売上の平均と合計を計算 sales_data %>% summarize( avg_sales = mean(sales), total_sales = sum(sales), max_sales = max(sales) )

5. group_by():グループごとに処理

データをグループ分けして、グループごとに集計します。これがdplyrの真骨頂です。

# 部署ごとの平均売上を計算 sales_data %>% group_by(department) %>% summarize( avg_sales = mean(sales), count = n() # 件数をカウント ) # 複数のグルーピング sales_data %>% group_by(year, month, department) %>% summarize(total_sales = sum(sales))
📌 パイプ演算子(%>%)について: 「データをこの関数に渡す」という意味です。コードが左から右へ読みやすくなります。Ctrl + Shift + M(Windows)でショートカット入力できます。

ggplot2:美しいグラフを簡単に作成

ggplot2は「Grammar of Graphics(グラフィックスの文法)」という考え方に基づいた可視化ライブラリです。複雑なグラフも直感的に作成できます。

基本的な構文

# 基本構文 ggplot(data = データ, aes(x = x軸, y = y軸)) + geom_○○○() # グラフの種類を指定 # 例:散布図 ggplot(sales_data, aes(x = advertising, y = sales)) + geom_point() # 棒グラフ(部署ごとの売上) sales_data %>% group_by(department) %>% summarize(total_sales = sum(sales)) %>% ggplot(aes(x = department, y = total_sales)) + geom_col(fill = "steelblue") + labs( title = "部署別売上", x = "部署", y = "売上(円)" ) + theme_minimal()

よく使うgeom関数

  • geom_point():散布図
  • geom_line():折れ線グラフ
  • geom_col():棒グラフ
  • geom_histogram():ヒストグラム
  • geom_boxplot():箱ひげ図
💡 グラフ作成のコツ: まずシンプルなグラフを作り、徐々に色やラベルを追加していくアプローチがおすすめです。最初から完璧を目指すと挫折します。

tidyr:データ整形の2大関数

データ分析では、「データの形」を変える作業が頻繁に発生します。tidyrはその作業を簡単にしてくれます。

pivot_longer():横持ちを縦持ちに

複数の列を1つの列にまとめます。例えば、月ごとに分かれた売上データを1列にまとめる場合。

# 変換前(横持ち) # name, jan, feb, mar, apr # 田中, 100, 120, 110, 130 # 佐藤, 90, 95, 100, 105 # 変換後(縦持ち) data %>% pivot_longer( cols = c(jan, feb, mar, apr), names_to = "month", values_to = "sales" ) # 結果 # name, month, sales # 田中, jan, 100 # 田中, feb, 120 # 田中, mar, 110 # ...

pivot_wider():縦持ちを横持ちに

pivot_longer()の逆操作です。1つの列を複数の列に展開します。

# 縦持ちデータを横持ちに変換 data %>% pivot_wider( names_from = month, values_from = sales )
📌 いつ使う? ggplot2でグラフを作る際は「縦持ち」が基本。集計表を作る際は「横持ち」が見やすいことが多いです。

実践例:実際の業務データで試してみる

ここまでの知識を使って、実際の業務でよくある「月次売上レポート作成」を自動化してみましょう。

# ライブラリ読み込み library(tidyverse) # CSVファイル読み込み sales_raw <- read_csv("sales_data.csv") # データクリーニング&集計 monthly_report <- sales_raw %>% # 2025年のデータのみ抽出 filter(year == 2025) %>% # 必要な列だけ選択 select(date, department, product, sales, cost) %>% # 利益列を追加 mutate(profit = sales - cost) %>% # 月・部署ごとに集計 group_by(month = floor_date(date, "month"), department) %>% summarize( total_sales = sum(sales), total_profit = sum(profit), profit_rate = total_profit / total_sales * 100, .groups = "drop" ) # グラフ作成 monthly_report %>% ggplot(aes(x = month, y = total_sales, color = department)) + geom_line(size = 1.2) + geom_point(size = 3) + labs( title = "2025年 月次売上推移", x = "月", y = "売上(円)", color = "部署" ) + theme_minimal() + scale_y_continuous(labels = scales::comma) # レポートをCSV出力 write_csv(monthly_report, "monthly_sales_report_2025.csv")

このコードは、毎月手作業で2〜3時間かかっていた集計作業を、わずか数秒で完了させます。これがR言語とTidyverseの威力です。

非エンジニアが挫折しない学習方法

私自身が非エンジニアからR言語を習得した経験から、以下の学習方法を強くおすすめします。

🎓 3ヶ月でマスターする学習ステップ

  1. 1ヶ月目:基礎文法とdplyr
    • R言語の基本文法(変数、関数、データ型)
    • dplyrの5つの動詞を実務データで練習
    • パイプ演算子に慣れる
  2. 2ヶ月目:ggplot2とtidyr
    • 基本的なグラフ作成(棒・折れ線・散布図)
    • データ整形(pivot系関数)
    • 実務で使うレポートを1つ自動化
  3. 3ヶ月目:応用と自動化
    • 複数のデータソースを結合(join系関数)
    • R Markdownでレポート自動生成
    • 定型業務を完全自動化

おすすめ学習リソース

  • 書籍:『RユーザのためのRStudio[実践]入門』(技術評論社)
  • 公式サイト:Tidyverse公式ドキュメント(英語だが図が豊富)
  • 実践:Kaggleの初心者向けデータセットで練習
  • コミュニティ:Tokyo.R(R言語ユーザーグループ)のイベント参加
💡 挫折しないコツ: 「完璧に理解してから次へ」ではなく、「とりあえず動かして、必要になったら調べる」スタイルが効率的です。エラーを恐れず、試行錯誤を楽しみましょう。

まとめ:R言語で広がるキャリアの可能性

R言語とTidyverseを習得したことで、私のキャリアは大きく変わりました。

  • データに基づく提案ができるようになり、社内での信頼が向上
  • 定型業務の自動化により、月20時間以上の業務時間を削減
  • 統計解析のスキルを活かしてコンサルティング案件を受注
  • 最終的にエンジニアへのキャリアチェンジを実現

非エンジニアでも、正しい学習方法と実践の場があれば、確実にスキルは身につきます。特にTidyverseは、直感的な文法設計により、初心者でも習得しやすい設計になっています。

「データ分析ができる人材」は、あらゆる業界で求められています。ぜひこの記事を参考に、R言語とTidyverseの世界に飛び込んでみてください。