見出し画像

棒グラフの作成までの詳細(コードを含む)

前回作成した棒グラフデータのダウンロードから、データの整形、棒グラフ作成までの詳細です。

これまでの解説では、必須の部分のみの紹介にとどめ、全体のコードは省略していました。有料記事となりますが、この記事の最後に、まとめたコードをダウンロードできるようにしています。

R 言語を使ったプログラムの練習に使えるかと思います。練習用データとして、スプラトゥーン3の対戦データ (stat.ink のデータ) を使用しています。 ゲームとプログラミングに興味のあるかたは身近なデータで学んでみてはどうでしょうか?


1. 作業環境

実際に使用した作業環境は、下記のようになっています。フォントの設定は、 Mac を想定していますので、 Windows の方はご注意ください。

  • macOS 10.15.7 以上

  • R version 4.2.1

  • tidyverse 1.3.2

また、一部、ターミナルを利用したコマンドで解説しています。

2. データのダウンロード

使用するデータは、 stat.ink のサイトからダウンロードできます。1日ごとに集計された対戦結果が公開されています。「統計情報ダウンロード」と書かれているリンクから、こちらのダウンロードのページに進めます。さらに、「バトルのリザルト情報(CSV)」と書かれたリンクに進むと、 CSV 形式のファイルをダウンロードできるようになっています。

1つ1つダウンロードするのは大変なので、現在までのデータを1つにまとめた zip ファイル (battle-results-csv.zip) をダウンロードするのが簡単です。2024年3月時点で、500MB ほどのサイズになっています。

適当なフォルダにダウンロードした後、Zip を展開してください。展開後の battle-results-csv というフォルダを見ると、1日ごとの結果が、1つの CSV ファイルとして保存されています。(展開後は、4GB ほどのサイズになるので空き容量に注意してください。)

3. データの整形

読み込んだ後の作業がしやすいよう、ダウンロードしたデータを整形しておきます。この部分は、 R ではなく、ターミナル(シェル)のコマンドを使った方法で紹介します。

ターミナルで下記のコマンドを実行します。展開後の csv ファイルは、1日単位に分かれているため、 cat コマンドで連結したのち、ソート (sort) して、重複行を除外 (uniq) しています。ファイルごとに含まれているヘッダーを1行にできます。

また、一部に時間帯から使用ブキや試合結果まで完全に一致するデータが含まれているので、これを除外する目的もあります。(何らの影響で重複して登録されているのだと思います。)

cat battle-results-csv/2022-{09,10,11}-*.csv | sort | uniq > battle_results_drizzle2022.csv

この処理を必要なシーズンごとに行います。また、連結後、そのままの csv ファイルではサイズが大きくなるため、 gzip コマンドで圧縮しておくと良いでしょう。(必須な処理ではありません。)

cat battle-results-csv/{2022-12,2023-01,2023-02}-*.csv | sort | uniq > battle_results_chill2022.csv
cat battle-results-csv/2023-{03,04,05}-*.csv | sort | uniq > battle_results_fresh2023.csv
cat battle-results-csv/2023-{06,07,08}-*.csv | sort | uniq > battle_results_sizzle2023.csv
cat battle-results-csv/2023-{09,10,11}-*.csv | sort | uniq > battle_results_drizzle2023.csv

gzip *.csv

4. データ読み込み用の関数を定義する

シーズンごとに分けた結果を読み込みますが、毎回同じ処理を行うのは面倒です。このようなときは、同じ処理になるコードをオリジナルの関数として、先に定義しておくと便利です。

read_battle_results という関数を定義します。引数に前述の整形した csv ファイルと、シーズンを指定します。シーズンごとに分けていますが、一部、前シーズンの結果が含まれるため、それを除外するためです。(新シーズンは午前9時開始のため、0時から9時までは前シーズン)

また、ヘッダーにハイフン "-" が含まれていると、変数名として使用しづらいので、アンダースコア "_" に置換するという処理も必要になります。

読み込み用関数 read_battle_results のコードは、下記のようになります。

ここから先は

9,039字 / 2画像 / 1ファイル

¥ 300

この記事が気に入ったらサポートをしてみませんか?