第3章ではggplot2を使ったグラフの作り方について説明してきました。今回は少し実用的な場面としてテストの結果を下位項目も含めてまとめてグラフに表示するを目指したいと思います。以前仕事で1日で130個以上のグラフをExcelでコピペの手作業で作るという苦行をしたことがあるのですが、この方法で一気に作れるようになりました。【3-4】Rのggplot2でヒストグラムを作るgeom_histogram関数でfacet_grid関数について説明しましたが、今回はfacet_wrap関数を紹介します。下位項目をまとめてグラフで表示するためにはデータハンドリングも必要になります。データハンドリングについては2章で説明していますのでそちらもご参照ください。1.使用するデータ今回は【2-7】Excelの複数シートをRで一気に読み込むで取り込んだデータを使用します。使用するFIMという架空のデータです。FIM18項目ありそれぞれ1〜7点で採点します。FIMには運動項目と認知項目というサブグループがあります。食事〜階段までの13項目を運動項目(FIM_運動合計:13〜91点)理解〜記憶までの5項目を認知項目(FIM_認知合計:5〜35点)すべての合計をFIM_合計(18〜126点)またFIMを3回計測し、sheetという列には1回目,2回目,3回目が入っています。read.csv(url)head(dat)このデータからFIMの合計点と下位項目が1〜3回目でどのように変化したのかをグラフにしてみたいと思います。今回は棒グラフで平均を出します。2.データハンドリング【3-9】ggplot2でヒートマップを作るgeom_tile関数ではFIM_食事の項目だけを使いましたが、今回は全ての下位項目を使用します。グラフ作成にあたり、以下をイメージしてデータハンドリングします。・グラフを作る際、FIM_○○の"FIM_"はいらないので消したい・sheetごと、各項目ごとの平均を出したい。そのためにはwideデータになっているdatをlongデータにする必要がある・グラフに数値を表示するときに小数点が続くと見栄えが悪いので、小数点第1位まで表示したい今回もtidyverseパッケージを使用します。tidyverseパッケージを一度も使ったことがなければインストールします。install.packages("tidyverse")既にインストールしていればlibrary関数で呼び出します。data.frameの名前を変更する方法names関数を使うとdata.frameの列名をベクトルとして出してくれます。names(dat)そして直接変更するにはrename関数などありますが、同じ長さのベクトルを準備すると一括して入れ替えることができます。同じ長さのベクトル指定した文字列を消すstr_remove関数str_remove関数は指定した文字を消す事ができます。longデータについてはこちらの記事で紹介しています。TRUEを指定します。group_by関数とsummarize関数で集計する項目とsheet毎に集計を行うにはgroup_by関数とsummarize関数を使います。四捨五入するmutate関数とround関数を使って平均の値を四捨五入します。まとめると最初のコードになります。3.棒グラフを作成する棒グラフを作るにはgeom_bar関数を使います。棒グラフに数値を乗せる方法も紹介しています。("HiraKakuPro-W3")を使っています。+をの色をつけた箇所を消してください。facet_wrapでグループ毎のグラフをまとめて作るそしてグループ毎にグラフを作るにはfacet_wrap関数を使います。項目)これで項目ごとのグラフができました。気になる点があります。facet_wrapはそのままだと軸が固定されています。合計と各項目に点数差がありすぎて、各項目の点数の差がわかりません。"free"を追加します。"free")ただこれも1つ問題があります。グラフ自体は変化しているように見えるのですが、それぞれの軸が違うのでグループ毎の比較ができません。そのためにはdat_statからそれぞれを抽出してグラフを作成する必要があります。グラフ作成まで行ってみます。datを省略できます。"free"は追加しませんそしてfilter()の列以外は全部同じなことにも注目してください。filter関数については【2-4】で紹介しています。"none")5.まとめ今回はfacet_wrapでグループ毎のグラフを作る方法を紹介しました。facet_wrapはグループの違いをみるのに非常に便利です。合計と下位項目が入っているデータだと軸の問題が出ますので注意が必要です。今回作った3種類のグラフを組み合わせるためのgridExtraパッケージがあり次回紹介します。【演習2】データハンドリングの基礎を復習します第2章ではデータハンドリングの基礎について紹介してきました。【2-6】Rでgroup_by関数とsummarize関数を使ってグラフ作成に必要な統計量(平均や標準偏差など)を求める今回は上記の復習として実際にデータを前処理し、集計をかけるところまで行います。前回同様FIMのデータを使います。退院時」全てのタブの使います。ダウンロードした後、プロジェクトの指定フォルダにファイルを移動させます。プロジェクトの使い方がわからない場合は【1-6】Rstudioのプロジェクトについて解説しますをご参照ください。複数のデータを結合する方法を紹介していません。以下のコードを実行してください。fim_out)bind_rows関数は複数のデータフレームを縦につなげる関数です。fimという変数に入院時、1ヶ月、退院時全てのデータを縦につなげました。全体の合計)のデータがあります。今回同じ患者に3回反復測定を行っています。<目標>FIM各項目の平均点が入院時→1ヶ月→退院時でどう変化しているのかを表にする課題1まずデータの確認を行います。head関数、str関数を使ってデータを確認します。回答は下にスクロールするとあります↓head(fim)str(fim)課題2データをlongデータに変えます。列名と列番号を取得します。t関数(またはdata.frame関数)とnames関数を組み合わせて列名と列番号を取得します。TRUE)課題4次はsummarize関数を使い集計します。fim_summarizeという変数名に作ります各項目が時期によってどう変化するのかが見たいのでした結果が項目→時期→点数と並ぶようにします。出た結果を見ると1箇所望まない結果になっている箇所があります。