R言語ではじめるプログラミングとデータ分析:サポートページ
『R言語ではじめるプログラミングとデータ分析』のサポートページです。
この記事では、書籍の特徴などの紹介をしています。
本書に使用したサンプルデータとRコードは、すべてGitHubから参照できます。
R言語ではじめるプログラミングとデータ分析 2019年12月:初版第1刷発行 2020年12月:初版第2刷発行 |
目次
1.基本情報
出版社 : ソシム
著者 : 馬場真哉(このサイト、Logics of Blueの管理人です)
タイトル : R言語ではじめるプログラミングとデータ分析
発売日 : 2019年12月26日
簡易目次 :
第1部 【導入編】Rを始める
第2部 【初級編】Rによるデータ分析の基本
第3部 【中級編】長いコードを書く技術
第4部 【応用編】Tidyverseの活用
本体価格は3000円です(消費税10%で税込み3300円となります)。
2.書籍の特徴
書籍の前書きなどを参考にしつつ、本書の特徴を記します。
書籍の特徴
基礎から順にステップアップ
この本は、R言語の初心者を対象読者としています。どれくらい初心者を想定しているかというと「ベクトルという言葉を知らない」というレベルです。
そもそも「プログラミングってなんやねん」というところから本が始まります。そのうえで、少しずつ応用的な内容へとステップアップしていきます。
第2部の初級編では、3行で終わるような短いプログラミングの事例を紹介しています。こういった短いコードを気軽に実装できるようになるのが最初の目標です。
続く第3部の中級編は、Gitによるバージョン管理の方法からスタートします。バージョン管理の方法を学ぶと、プログラミングに失敗したとしても、簡単に修正ができるようになります。そのあとで繰り返し・条件分岐・関数の作成などの基本構文を解説します。
第4部で初めてTidyverseが登場します。Tidyverseは、データサイエンスのために設計された、Rのパッケージの一群です。Tidyverseを使うことで、より効率的なデータ分析ができるようになります。この本ではTidyverseの機能を「網羅」はしていません。それでも、よく使う機能はなるべく解説するようにしました。パイプ演算子の基本から始まって、データの読み込み、データの抽出・変換・集計処理、日付の操作、データの可視化、そしてデータの整形における、モダンな(現代的な)方法を体験することができます。
古典的なRプログラミングを解説してから、Tidyverseの解説に移るという流れになっているのが大きな特徴です。
難易度マークがついている
プログラミングの本は、どれもたいてい分厚いです。本書も例外ではありません。重要な項目だけを選んだつもりですが、それなりにはページ数があります。
初心者向けの入門書では、いわゆる逆引きのような「どこから読んでも大丈夫」という構成にはしにくいです。例えばベクトルについて知らない読者が、行列やデータフレームなどの高度なデータ構造を理解できるとは思いません。前から順番に読んでいただく必要があります。
しかし、分厚い本を、最初から順番にひたすら読んでいくのは大変です。
そこで、この本では、節ごとに難易度マークを付けました。難易度は以下の3つです。
★☆☆:難易度「低」
★★☆:難易度「中」
★★★:難易度「高」
最初のうちは、★☆☆の難易度「低」の節だけを読んで、ほかを読み飛ばしても大丈夫です。これなら、ページ数が半分ほどに減ります。
分厚い本を最初から最後まで目を皿のようにして読むのは大変です(もちろんそうしてくれると嬉しいのですが)。途中で挫折するくらいなら、本は簡単なところだけを流し読みして「とにかく実践」へと移るのは、一つの方法だと思います。プログラムは、やはり自分で手を動かさないと身につかないです。実践をするのが一番大切だし、それを後押ししたいと思います。
上記のような意図で難易度マークを付けました。ぜひ活用してください。
なお、第3部以降は難易度「中」以上の、やや難しい内容が増えてきます。
最後まで読み切ることを目標にする場合は、難易度が高い節にもチャレンジしてみてください。
対象読者
この本は、プログラミングに明るくない、R言語の初心者の方を対象読者としています。
R言語を今すぐ使う必要性のある方はもちろん、今すぐに必要ではないが勉強はしておきたいという人も読者として想定しています。
先述のように「飛ばし読みがしやすい(必要な箇所だけが読める)」というのは「R言語を今すぐ使う必要のある方にとって便利な特徴だと思います。
また、少し応用的な内容を入れたり、巻末にRリファレンスを載せたりしました。時間に余裕のある方はじっくりと本を読み進めることができる構成となっています。
書籍の構成
第1部 【導入編】Rを始める
第1部では、Rのインストールから、プログラミングの初歩までを解説します。
第2部 【初級編】Rによるデータ分析の基本
第2部では、R言語のごく基礎的な内容を解説します。
第1章から2章では、単純な3行プログラミングを紹介します。そのうえで「この3行をどのように変えていけば、自分の欲しいように結果を変えていくことができるのか」を説明する、という流れとなっています。
第3章では数値型や文字列型などのデータの型の解説をします。
第4章ではベクトル・行列・配列の基本を解説します。
第5章ではデータフレームの基本を解説します。
第6章ではリストの解説をしたうえで、データ構造の変換などの方法を解説します。
第7章では、1章かけてファイルの読み込みやファイルへの出力を解説しています。
こちらではR言語の文法とは直接関係がないところも解説しています。例えば、ファイルを読み込む際に、ファイルのパスを指定することがあります。このとき、絶対参照や相対参照という考え方も解説します。これらを理解すれば、ファイルのパスの指定が簡単になるからです。また、「文字コードが異なるために発生したエラーの対処法」のような内容も盛り込んでいます。R言語を実際に使っていたら、この手のエラーには頻繁に出くわすからです。
基本事項を解説した後、「3行で終わる短いプログラミング事例」の紹介に移ります。
こちらで、集計処理や基本的なデータの可視化、そして仮説検定を中心とした統計分析の実行方法を解説します。
第8章ではさまざまな演算子の解説をします。
第9章では3行で終わる集計をするためのプログラミング事例を紹介します。
第10章ではデータの変換をする方法を簡単に紹介します。
第11章では基本的な可視化のプログラミング事例を紹介します。
第12章では3行プログラミングを少し離れて、Rで確率分布を扱う方法を解説します。
第13章では仮説検定などのプログラミング事例を紹介します。
第14章では外部パッケージを活用する方法を解説します。
第3部 【中級編】長いコードを書く技術
第3部からは「3行で終わるプログラミング」から離れて、もっと長いコードを書く技術を解説します。
第1章ではGitによるバージョン管理の方法を解説します。Gitを使うことで、ファイルの変更履歴が簡単に取得できます。うっかりしてプログラミングを誤ったとしても、簡単に元に戻すことができるようになります。
第2章では条件分岐と繰り返しを解説します。if文やfor文の基本を解説します。
第3章では関数の作り方を解説します。簡単な例外処理の解説もあります。
第4章では汎関数の使い方を解説します。汎関数とは「関数を引数にとる関数」のことです。汎関数を実際に自分で作ったり、Rが提供してくれる便利な汎関数を使ったりする方法を解説します。
第5章では長いコードを書く時の工夫を紹介します。セクション区切りをしたり、ファイルの分割をしたりする方法の紹介となります。
第4部 【応用編】Tidyverseの活用
第4部ではTidyverseの解説をします。
第1章ではTidyverseの基本事項を解説します。
第2章ではmagritrパッケージが提供するパイプ演算子などの各種演算子の解説をします。
第3章ではtibbleの基本とreadrパッケージが提供するデータの読み込みの方法を解説します。
第4章ではdplyrパッケージが提供するデータ操作の基本的な方法を解説します。
第5章ではlubridateパッケージによる日付の操作とhmsパッケージによる時間の操作の基本を解説します。
第6章ではggplot2パッケージを使ったデータの可視化の基本を解説します。
第7章ではtidyrパッケージによる縦持ちデータへの変換方法と、dplyrパッケージによるテーブルの結合方法を解説します。
本書に載っていないこと
本書は、R言語の教科書というよりかはチュートリアルのようなものです。
R標準のプログラミングからTidyverseの活用まで幅広いテーマを扱っていますが、その代わりに網羅性はある程度犠牲にしています。
本書では以下の内容を扱っていません。
- 数理統計学の理論
- 分析のプレゼンテーションの方法
- スクレイピング
- Tidyverseの最新の潮流
3.本書のサポート情報
サポート情報を記載します。
サンプルデータとコード
本書に使用したサンプルデータとRコードはすべてGitHubから参照できます。
緑色の「Clone or download」というボタンをクリックしてから「Download ZIP」をクリックすると、すべてのファイルをZIP形式でダウンロードできます。
書籍のサンプルコードとデータ。
参考資料
主にWebで閲覧できる、R言語に関する参考資料のリンクを以下に記載します(一部は英語です)。
拙著を読んだあと、もっと上級者向けの内容を学びたいという方にお勧めします。拙著の執筆の際にも参考させていただきました。
・The Comprehensive R Archive Network(統計数理研究所のミラーサイト)
Rはこちらのサイトからダウンロードします。
・Download RStudio
Rによるプログラミングを支援してくれる便利なソフトであるRStudioはこちらのサイトからダウンロードします。
・Tidyverse
データ分析の生産性を上げてくれる便利なパッケージ群であるTidyverseのリファレンスなどが参照できます。
・RStudio Cheat Sheets
英語ですが、Cheat Sheetsと呼ばれる、よく使う機能を整理したカンニングペーパーのようなものが公開されています。
・R Advent Calendar 2019
こちらは日本語です。
Advent Calendarとは、クリスマスまでの日数を数えるカレンダーです。12月1日から25日のクリスマスまで、毎日1記事ずつ、R言語に関する記事が公開されています。
リンクは2019年バージョンですが、2011年から行われているようです。
個別の記事に目を通すのはもちろん、著名な方々がブログ記事を更新されることもあるので、興味を持ったブログ名をメモしておくと役に立つかもしれません。
・Welcome-Advanced R
Advanced RというR言語の有名な教科書の全文が公開されています(英語です)。
日本語版は共立出版さんから「R言語徹底解説」という名前で出版されています。
R言語の基本機能の詳細な解説がなされています。
・R for Data Science
こちらも著名な書籍であるR for Data Scienceの全文が公開されています(英語です)。
日本語版はO’Reilly Japanさんから「Rではじめるデータサイエンス」という名前で出版されています。
Tidyverseを用いたデータ分析のノウハウが解説されています。
・R自学自習の基礎知識-Heavy Watal
R言語に関する様々な情報が記載されています。Tidyverseにも詳しいです。
・R|を利用した統計解析およびデータの視覚化-biostatistics
R言語に関する様々な情報が記載されています。特にグラフィックスの解説が素晴らしいです。
ここで紹介した以外にも、R言語を扱った素晴らしいブログなどがたくさんあります。
R言語は歴史が長いので、情報も豊富に蓄積されています。
R Advent Calendar 2019などに寄稿しているブログ様などを参照されると良いと思います。
発行後の補足情報
2021年1月5日追記
正誤表(第1・2刷)
■ p446 索引の右列 「あ行」末尾から「か行」先頭にかけて
誤
オブジェクト 62
●か行
折れ線グラフ 416
カーネル密度推定 404
正
オブジェクト 62
折れ線グラフ 416
●か行
カーネル密度推定 404
更新履歴
2019年12月19日:新規作成
2019年12月23日:GitHubへのリンクを追加。また、様々なサポート情報を追記。
2020年12月27日:重版した旨を追記
2021年01月05日:正誤表の追加
統計セミナーではお世話になりました。精力的なご執筆&出版ですね! エンドユーザーとしては、大変ありがたく深く感謝です。同僚の分も含めて2冊注文させていただき、先ほど届きました。ここまで細かく網羅的に実務に即した視点で書かれたR本は本邦初ではないでしょうか。Rユーザーしては必携だと思います。分厚く読みごたえがあるので、手を動かしながら長くじっくりと活用させていただきます。
P.S.
トップページの「●書籍情報:Pythonで学ぶあたらしい統計学の教科書」の”こちらから閲覧できます”のリンク先がIEとChromeで開かないような?
立て続けにすみません。
”こちらから閲覧できます”のリンク先、10分くらい放置したらChromeでは開きました。IEの方はダメないような?
TK様
コメントありがとうございます。
管理人の馬場です。
先日のセミナーでは、お越しいただきありがとうございました。
また、拙著を購入いただき、ありがとうございます。
『Pythonで学ぶあたらしい統計学の教科書』において、
頂きました書評は、外部サイトになります。
そのため、当方では対応が難しく、ご容赦ください。
Edgeでは閲覧できましたので、IEではなくEdgeを使用いただければと思います。
馬場様
外部サイトの件、了解しました。
Edgeで閲覧することにします。
ありがとうございました。
馬場先生
いつもお世話になっております。
『R言語ではじめるプログラミングとデータ分析(初版第1刷)』で学習しています。
P.425のコード実行したら以下のようなエラーが出ました
# 縦持ちデータはデータの可視化が容易
> ggplot(data = tidy_1) +
+ geom_line(aes(x = time, y = sales, colour = product)) +
+ ylim(0, 40) +
+ scale_x_date(date_labels = “%m月%d日”)
> # pivot_longerの適用
> messy_1 %>%
+ pivot_longer(cols = c(product_a, product_b, product_c),
+ names_to = “product”, values_to = “sales”)
Error in pivot_longer(., cols = c(product_a, product_b, product_c), names_to = “product”, :
could not find function “pivot_longer”
対処策ご教示ください。
なお、作業環境はWindows 10でバージョンはR 3.6.1、RStudio 1.2.5001です。
よろしくお願いします。
盛 拝
盛様
コメントありがとうございます。
管理人の馬場です。
拙著をお読みいただきありがとうございます。
『pivot_longer』関数はtidyrパッケージのバージョン1.0.0から導入されました。
そのため、これよりも古いバージョンですと、エラーになります。
tidyrパッケージのバージョンを上げてから、再度実行すると、うまくいくのではないかと思います。
よろしくお願いいたします。
プログラミンが初めての者です。
初めの一歩が進めません。
ご教授頂けないでしょうか。
【状況】
2-1-6で”2-1-data-analysis-experience.R”を読み込みことで、コードがかかれるので、ctl+Entを押しますが、コンソールには、
”> summary(mod_lm)
summary(mod_lm) でエラー: オブジェクト ‘mod_lm’ がありません ”
と表示されます。
【質問】
最も基本的な操作が抜けている様です。
予測する解決手法を教えて頂けないでしょうか。
宜しくお願い致します。
TM様
コメントありがとうございます。
管理人の馬場です。
想像も含みますが、下記のやり方を試していただければと思います。
●コードの実行順を正しくする
2-1-6節の四角で囲まれて背景が白地のコード(”2-1-data-analysis-experience.R”の内容)は3行あります。
1行目のコードから順に実行していますでしょうか。
1行目と2行目を飛ばして、3行目だけ実行するとエラーになります。
1行目から順番に実行してみてください。
●CSVファイルを正しく配置する
2-1-5節にあるように、フォルダを作って、
プロジェクトを作って、CSVファイルを配置しているでしょうか。
分析対象となるデータ『2-1-1-height.csv』を、
図2-1のように配置しないと、正しく動きません。
参考になれば幸いです。
馬場様
ご教授有難うございます。
ご指摘の如く、最も基本的な手法が抜けていました。
一行づつ実行すべきでした。P.39の中段で教えて頂いておりました。
有難うございました。
馬場先生
いつもお世話になっております。
初歩的で大変申し訳ありませんが、書籍のサンプルコードとデータをダウンロードしようとしてリンクのGithubの画面を開いても、緑色の「Clone or download」というボタンが表示されず、代わりに緑色の「↓Code」というボタンが表示されます。クリックしても何もアクションせずファイルをダウンロードできないでおります。ブラウザはIEなのですがどうすればダウンロードできるのでしょうか。
下にあるファイル自体をクリックしても中身がブラウザに表示されるだけでダウンロードはできませんでした。
加瀬様
コメントありがとうございます。
管理人の馬場です。
GitHubのデザインが変わったようです。
緑色の「↓Code」というボタンを押してから、「Download ZIP」をクリックすると、
ファイル一式がダウンロードできます。
ダウンロードしたファイルを右クリックして「すべて展開」をクリックすると、
ファイルが得られるはずです。
なお、IEは古いブラウザなので、なるべく使わないようにしてください。
Edgeを使うのをお勧めします。
馬場先生
ご回答ありがとうございました。
IEではご指示の通り緑色の「↓Code」というボタンを押しても反応しませんでしたが、Edgeにしたら無事反応してダウンロードできました!! 今後Edgeを使います。
ありがとうございました。
馬場真哉 様
初めまして、先日「R言語ではじめるプログラミングとデータ分析」を購入しRを勉強し始めた者です。とても丁寧な説明で助かっています。
P42に書かれている「1-2-13 ワークスペースの保存」の通りに計算結果を保存しようとしたのですが、
gzfile(file, “wb”) でエラー: コネクションを開くことができません
とでてきて保存ができませんでした。
またサポートページからダウンロードした「1-2-read-calc-result.RData」に関しても「OPEN」を押すと
readChar(con, 5L, useBytes = TRUE) でエラー:
コネクションを開くことができません
とでてきて読み込みができませんでした
どちらも理由が「invalid argument」とでてきました
パソコンに関する知識が乏しいため解決方法をご存知でしたら是非教えていただきたくご連絡いたしました。
最初も最初の質問で大変恐縮ですがよろしくお願いいたします。
高橋様
コメントありがとうございます。
管理人の馬場です。
拙著をお読みいただきありがとうございます。
返信が遅れて失礼いたしました。
おそらくPCの設定によるものかと思います。
例えばPCのユーザー名が日本語名となっているなど、様々な理由が考えられます。
p31の1-2-4節の内容も参考にして「RStudioを管理者として実行」するなどすると、うまくいくかもしれません。
PCの設定については、当方では状況がわからないところがあります。
エラーメッセージで検索をして、対策を探すという方法もあります。
参考になれば幸いです。
馬場様
初めまして。NSと申します。
『R言語ではじめるプログラミングとデータ分析(電子版)』を読み、テキストのスクリプトの再現をしながら、Rの学習を進めております。
冒頭から丁寧な解説されていて、非常に助かっております。ありがとうございます。
テキストP.80「2-4-7-2 seq関数による規則性のあるベクトルの作成」について、
テキストで「1から10の公差1の等差数列」を作る箇所にて質問がございます。
Gitよりダウンロードした「2-4-vector-matrix-array.R」の79行目が、
上記に対応する箇所かと存じますが、「# 1から5の等差数列」と記載されています。
→こちらは「# 1から10の等差数列」の誤記ではないでしょうか?
(※関数の方は、テキストとRスクリプトが対応しており、不整合ございません。)
些末な点のご質問で大変恐縮ですが、ご確認をいただけますと幸いです。
NS様
コメントありがとうございます。
管理人の馬場です。
返信が遅れてしまい、失礼いたしました。
拙著をご利用いただきありがとうございます。
ご指摘の通りで、コメントが間違っております。コードは修正しておきました。
間違いがあったこと、お詫びいたします。
また、ご指摘いただけましたこと、感謝いたします。
ありがとうございました。
馬場様
NSでございます。
質問事項へのご返答、並びにコード修正のご対応くださり、
誠にありがとうございます。
こちらにて、まずは、お礼のご連絡まで。
度々の質問にて恐れ入りますが、追加での質問事項がございます。
テキストP.104の「Memo 抽出結果をdata.frameにする」にて、
class関数を使い、df_crabの1列目のデータ型が「factor」になっていることを
確認する部分があるかと存じます。
そこで、当方の環境で当該部分のサンプルコードを実行したところ、
「factor」ではなく、「character」として出力されました。
当方MacOS環境で運用しておりますが、出力結果の違いは、OSの違いによるものでしょうか?
※同様の事象を、P.343「4−3-1-3 data.frameとtibbleの違い」での、class(df_1$y)の出力においても、確認いたしました。
NS様
コメントありがとうございます。
管理人の馬場です。
返信が遅れて失礼いたしました。
こちらの件ですが、OSの違いではなく、Rのバージョンの違いが原因と考えられます。
拙著はp23にあるように「R3.6.1」で動作確認しました。
ここで「R4.0.0」以降では、data.frameにおけるfactorとcharacterの扱いが変わりました。
具体的に言えば「default.stringsAsFactors()」のデフォルトがFALSEになり、
p343で記載があるような「文字列を勝手にfactorに変換する」処理が入らなくなりました。
このため、新しいバージョンのRを利用すると、結果が一部変わることになります。
参考になれば幸いです。
馬場様
ご返信くださり、誠にありがとうございます。NSでございます。
Rバージョンによる違いとのこと、理解いたしました。
質問差し上げた当時、当方ではR4.0.3で運用しておりましたので、
data.frameにおける文字列の処理結果に違いが出たものと
認識いたしました。
詳細な解説をくださり、ありがとうございます。
こちらにて、お礼のご連絡まで。