この記事は私が職場で実施した、初心者向けRレクチャーの資料をブログ向けに加筆したものです✏️
当時のレクチャーがバイオインフォマティシャン育成を趣旨としていたため、以下のような情報に偏っているかもしれません。
この記事では、Rを学ぶとどんないいことがあるか?とか、Rをどんなことに使えるか?といった内容を紹介して、勉強のモチベをあげてもらえたら嬉しいな~ということを趣旨としています。
この記事にたどり着いてくださった方はほぼ間違いなくRがプログラミング言語であることをご存じの上、学びたいという意思がある方だと思います。それを前提にして話を進めます。
私が思うRは、データ分析に強い一風変わったプログラミング言語です。
他のプログラミング言語のようにWebサイトを作ったり、デスクトップアプリを作ったりするのは苦手ですがShinyというパッケージを使うことで限りなく近いことは実現可能です。 、その代わりにテキストデータや巨大なSQLデータベースの表データを分析したり、グラフを作成する用途では様々なプログラミング言語と比べてずば抜けて優れています。特に、統計解析に関しては全てのプログラミング言語に対して優位に立っています。
プログラミングはできないけど統計学は分かるという方(SAS出身者?)は勉強法さえ間違えなければ、いとも容易くRで統計解析を実行できるようになるでしょう。
ここまでの情報はほとんどの人が持っていると思いますが、意外と知られていない点としてめちゃくちゃ表計算が直感的にできるtidyverseという優れたフレームワークがRにはあります。 私はこれ一つとっても十分にRを学ぶ価値があると思っていて、全世界の初心者がtidyverseに入門して、神エクセルをこの世から粛正できる日を待ち望んでいます🐥
あ、あえて言うことでも無いかもしれませんが、Rは無料で使うことができます🆓
ここからは、実際のRコードをお見せしながら出来ることを紹介していきます⭐
tidyverseというRのフレームワークを使うと、直感的なデータ集計・分析が可能になります 。
たとえば、デジタル庁からワクチン接種数のデータを取得し、以下のような表を入手したとします。(出典)
都道府県 地域 1回目接種数 2回目接種数 3回目接種数
北海道 北海道 3988534 3958824 3306705
青森県 東北 1025136 1017567 848759
岩手県 東北 986186 977986 834446
宮城県 東北 1782219 1769784 1457213
秋田県 東北 796955 791475 691314
山形県 東北 873769 867908 744027
福島県 東北 1489565 1476549 1257337
茨城県 北関東・甲信 2327563 2310224 1887504
栃木県 北関東・甲信 1545966 1533887 1250958
群馬県 北関東・甲信 1508270 1497541 1250620
(以下省略)
🗾地域ごとの集計をしたければ、以下のように「地域」でグルーピング、「平均」と「SD」で要約することができます。
|>
マークは連続した処理を表す記号です。正式には**パイプ演算子**
vaccine_data |>
group_by(地域) |>
summarise(三回目平均 = mean(`3回目接種数`),
三回目sd = sd(`3回目接種数`))
出力結果は以下です。
地域 三回目平均 三回目sd
近畿 1949582.2 1686414.9
九州 1059592.2 798533.2
四国 585840.8 193754.2
中国 888084.4 540277.5
東海 2271741.0 1499927.5
東北 972182.7 310391.5
南関東 5555782.0 1896713.8
北海道 3306705.0 NA
北関東・甲信 1254319.2 489042.4
北陸 854560.0 464969.5
どうでしょうか? 原理はさておき、とても直感的な操作ではありませんか?
これはあくまで一例ですが、Excelではできないような操作もRでは可能な場合があり、データ分析目的のExcel用途はRにより効率化できると思います。
もしあなたが全くのR初心者なら、西田先生の以下の書籍から入門されると良いと思います。 初めてのプログラミング言語学習でExcel作業を置き換えたいなら、非常にわかりやすく最初の一歩を踏み出すことが出来ると思います。
Rでは高品質なグラフを作成することができます。
たとえば、先ほどの集計データを棒グラフにした例が以下です。
vaccine_data |>
group_by(地域) |>
summarise(三回目平均 = mean(`3回目接種数`),
三回目sd = sd(`3回目接種数`)) |>
# 以下グラフ作成操作
ggplot(aes(x = 地域, y = 三回目平均, fill = 地域)) +
geom_col()
他にも様々な美しいグラフを作成することができます📈🌍
作成可能なグラフについては、R Graph Galleryを是非ご覧ください。
RにはRmarkdownという高品質なドキュメント作成パッケージがあります。
Rmarkdownを使用すれば、通常の文章の中にRでの分析結果を埋め込んだドキュメントを作成することができます🗒️
作成できるドキュメントはpdf, htmlだけではなく**docx(Microsoft Word)**にも対応しています。
データ共有用途や研究ノートとしての用途だけではなく、報告書としても活用されています。
私が会社で実施したRレクチャーでは、学習効率や再現性の観点から原則Rmarkdownを使って勉強することをオススメしています。
Shinyというパッケージを使用すれば、一種のアプリケーションを作成することも可能です。
先ほどのコードを少しいじれば、以下のように、ユーザーからの入力によって動的に変化するコンテンツを簡単に作成することもできます。
Shinyの使用例も非常に面白いので、是非見てみてください。
https://shiny.rstudio.com/gallery/
Shinyについては、オライリーからR界の神であるハドレー・ウィッカム先生の解説書が出版されています(2021年4月)。やや上級者向けですが、既にJavaScriptやHtmlなどを学習された方にはちょうど良い一冊だと思います。(私には理解しきれない部分もちょこちょこありました)
Rがよく使用される職業は、医療統計学者・データサイエンティスト・バイオインフォマティシャンあたりだと思います。私見ですが、どの職業でRをどんな用途で使いたいかによって、学ぶべき内容は大きく変わると思います。
この記事をここまで読んでくださった貴方は、このうちのどれかに当てはまりますか? 当てはまらなかったら、データサイエンティストを指向されると良いかと思います。
統計が扱いやすいという性質から、特に統計解析を含む研究用途でRは非常によく使われています🏥
医療系(臨床試験等)では特によく使われ、FDA(米国食品安全保障省)日本でいうところの厚生労働省。医療機器や薬の審査や認可を行う機関。の申請資料に使うことも可能です。
主に使用するRの機能は、統計関連の関数と思います。
間違いなく私はデータサイエンティストではないので、間違っていたら非常にごめんなさい。私の認識では「機械学習をはじめとするデータサイエンス技術を利用し、データ分析を通じてビジネスや研究を行う人」をデータサイエンティストと認識しています。
機械学習ではpythonというプログラミング言語が有名ですが、Rでも一般的な機械学習・深層学習は実行可能です。なんなら表形式の行列データの取り回しや簡単ながら美しいレポート出力が可能なRはpythonよりも部分的にやりやすいかもしれません。
データサイエンティストが主に使用するRの機能は、データ整形・機械学習・統計解析といった幅広い分野だと思います。
私がこれです。 バイオインフォマティシャンはバイオインフォマティクス(生命情報学)に根ざした、生命科学系の研究者です。
研究対象は様々ありますが、十中八九遺伝子解析に集約されます。
ここでいう遺伝子解析とは、以下のようなものがあります。
これらの業界はRとともに進歩してきた側面があり、多くの機能はBioConductorというRパッケージレポジトリにおいて提供されています。
多くのゲノム解析手法について、現状BioConductorパッケージ以外の選択肢が無いため、バイオインフォマティシャンはRを避けて通ることができません。
主に使用するRの機能は、BioConductorで提供される解析パッケージ・データ整形・統計解析などです。
「統計を使いたいからRに入門する」という動機から始まる人が多いようですが、私は統計を一切使う用事がなくてもRはオススメしたいと思います。
先ほど紹介した「tidyverseというフレームワーク」だけに限れば他のプログラミング言語に比べると習得が極めて容易で、これを使ってエクセル仕事を自動化するだけでも十分勉強量に見合ったリターンが得られるからです。
といった疑問は大概Rで解決することができます。
また、最近では小学校でプログラミングが必修になりました。
今後はプログラミング的思考ムキムキな新卒ばっかりが入社してくる時代になる・・・と思うと少々怖いですが、こうしたトレンドに乗り遅れまいとプログラミングを勉強する際にもRはオススメです。tidyverseなら簡単なので。
R言語で基本的なプログラミング的思考(条件分岐、ループ、アルゴリズムなど)を養えば、その知識は他のプログラミング言語にも一部応用可能ですので、Rを第一言語として学ぶことに無駄は無いと思います。
このブログではtidyverseの使い方をメインに紹介していますが、何かの本を読みながら勉強したいのであれば、以下の書籍が決定版です。
通称「宇宙本」、日本のR界隈にもとても評判が良いです。私も読ませていただきましたが、この本買えばこのブログいらなく無いか?っていうレベルでわかりやすい解説本です。
ということで、今回は「これからRを学ぶ人たち向け」の記事を書いてみました。これで皆さんの学習モチベーションが上がれば幸いです😄