P. スペクター [Spector] (2008 / 石田 基広, 石田 和枝 訳 2008) Rデータ自由自在 [原題 Data Manipulation with R]

  • Phil Spector, 2008: Data Manipulation with R. New York: Springer Science+Business Media LLC, 152 pp. ISBN 978-0-387-74730-9 (paperback)
  • P. スペクター 著, 石田 基広, 石田 和枝 訳, 2008: Rデータ自由自在。シュプリンガー・ジャパン, 181 pp. ISBN 978-4-431-10047-8. (2020年現在、丸善出版から発売、ISBN 978-4-621-06154-1 )

2008年3月に英語版の新刊情報を見て注文した。日本語版は2008年11月の発行で、わたしは2009年3月に店頭で見て買った。英語版、日本語版とも、A5判よりすこし大きい判のペーパーバックで、英語版の表紙は赤茶色から黄土色の横しまの背景、日本語版はSpringerの数学の本に多い黄色の表紙だ。わたしは2008年当時、気象データの解析の道具を R にかえようと思って、R の入門書で勉強していた。データの形式変換については入門書レベルだけではたりないと思い、この本に期待したのだった。しかし、実質的に読まないままきた。本書の書きかたはすでに R をつかいこなしている人むきで、R の ベクトル、リスト、データフレームなどのデータ構造をまだ理解していなかったわたしには意味がつかめなかったのだった。そして、わたしは仕事の道具を R にきりかえないまま来てしまった。

2020年12月に、手持ちの R に関する本をあつめてみて、これがあったのを思いだした。ほかの本をいくつか読んだあとでこれを見ると、話題がだいぶわかってきた。

第1章には、まず、Rがもつことのできるオブジェクトには「モード」と「クラス」があること、そして、だいたい同じ内容でモードやクラスのちがうオブジェクトをつくるにはどうしたらよいか、といった話がある(わたしはまだくわしく理解していない)。
ひとつ重要なのは、欠損値の扱いだ。欠損値は NA でしめされる。欠損値であるかどうかの判定には (NAとの比較という形でなく) is.na 関数をつかう。統計量をもとめる関数の na.rm オプションなど、欠損値に対応した処理がいろいろ用意されている。数値計算上で「数でない」ことをしめす NaN もつかうことができる。is.na では NaN も NA とみなされるが、is.nan で区別することができる。

第2章はデータファイルの読み書き。わたしにとっては当面、read.table と write.table が重要だ。一度によみこめない大量のデータを読むことも必要になるかもしれず、わたしには本書2.7節の記述だけではできそうもないが、手がかりにはなる。

第3章は、Rの中から外のデータベースにSQL言語でアクセスして読み書きすること。Rのdata frameと、いわゆるrelational database とは、だいたい同じ発想だから、それを関連づけてつかいたくなるのは当然だ。ただし、本書が出てから10年以上たっているから、ほかのソフトウェアとの連携の具体的なやりかたについては、必要に応じてあたらしい情報をしらべなおす必要があるだろう。

第4章は日付のあつかい。日付をあつかう Dateクラスと、日付と時刻をあつかう POSIXlt、POSIXct クラスが説明されている。

第5章は factor というデータ構造。本書日本語版では「因子」となっている。(別の本では「ファクタ」となっていた。) 因子分析の因子ではない。この章のあたまに「取りうる値の種類が限られている変数」「カテゴリカル変数」であると説明されている。実数型の変数を階級わけして factor をつくったり、日付・時刻から factor をつくったりする方法の説明がある。

第6章の題目は「添え字」(subscript)となっている。ベクトル、行列(matrix)、リスト、データフレームなどの要素や部分をどのような形で指定できるかだ。

第7章は文字列の操作。基本的な操作のほか、「正規表現」(regular expression)のつかいかたがある。

第8章はデータの「集約」。一連のデータのうちで、ある条件にあてはまるものの個数をかぞえたり、集計したり、中央値そのほかの統計量を計算したりする操作だ。

第9章はデータの変形。列名をつけかえる、変数を二値化する、表の縦横を入れかえる、などの操作。複数のデータフレームを結合する操作のノウハウは、わたしにとって(一連のデータを複数回にわけてダウンロードしてきたり、複数回のシミュレーションの結果を比較したくなったりするので)すぐ役にたちそうだ。

折りかえしのあとに 日本語版のくわしい目次をつける。章のレベルで、英語版の表題もつけておく。

== 目次 ==
序 [Preface]
目次 [Contents]
第1章 Rにおけるデータ [Data in R]
– 1.1 モードとクラス
– 1.2 Rにおけるデータの保存
– 1.3 モードとクラスの検証
– 1.4 Rのオブジェクトの構造
– 1.5 オブジェクトの変換
– 1.6 欠損値
– 1.7 欠損値の扱い
第2章 データの入出力 [Reading and Writing Data]
– 2.1 ベクトルと行列の読み込み
– 2.2 データフレーム: read.table 関数
– 2.3 コンマあるいはタブ区切りのインプットファイル
– 2.4 固定幅インプットファイル
– 2.5 Rのオブジェクトからデータを抽出する方法
– 2.6 コネクション
– 2.7 長大なファイルを読み込む
– 2.8 データの生成
– – 2.8.1 数列
– – 2.8.2 乱数
– 2.9 順列
– – 2.9.1 ランダムな順列
– – 2.9.2 すべての順列の列挙
– 2.10 数列の操作
– 2.11 表計算データ
– – 2.11.1 Windows で RODBC パッケージを利用する
– – 2.11.2 すべてのプラットフォームで利用可能な gdata パッケージ
– 2.12 Rのデータオブジェクトの保存と読み込み
– 2.13 バイナリファイルの操作
– 2.14 ASCII形式のファイルへの R オブジェクトの書き込み
– – 2.14.1 write 関数
– – 2.14.2 write.table 関数
– 2.15 他のソフトウェアのデータの読み込み
第3章 R と データベース [R and Database]
– 3.1 SQLの概略
– – 3.1.1 ナビゲーション用のコマンド
– – 3.1.2 SQLの基礎
– – 3.1.3 集約
– – 3.1.4 二つのデータベースの結合
– – 3.1.5 サブクエリー
– – 3.1.6 データベースレコードの修正
– 3.2 ODBC
– 3.3 RODBC パッケージを利用する
– 3.4 DBI パッケージ
– 3.5 MySQL データベースへのアクセス
– 3.6 クエリーの実行
– 3.7 テーブルの正規化
– 3.8 MySQL へのデータの書き込み
– 3.9 より複雑な集約
第4章 日付型データ [Dates]
– 4.1 as.Date
– 4.2 chron パッケージ
– 4.3 POSIX 規格のクラス
– 4.4 日付の処理
– 4.5 時間間隔
– 4.6 連続する日付データ
第5章 因子 [Factors]
– 5.1 因子の利用
– 5.2 数値因子
– 5.3 因子の操作
– 5.4 実数値の変数からの因子の作成
– 5.5 日付・時間に基づく因子
– 5.6 因子の組合せ
第6章 添字 [Subscripting]
– 6.1 添字の基本
– 6.2 数値による添字
– 6.3 文字による添字
– 6.4 論理値による添字
– 6.5 行列や配列の添字指定
第7章 文字処理 [Character Manipulation]
– 7.1 文字データの基本
– 7.2 文字列の表示と結合
– 7.3 文字列の部分操作
– 7.4 R における正規表現
– 7.5 正規表現の基礎
– 7.6 文字列の分解
– 7.7 R での正規表現の利用
– 7.8 置換と前方参照
第8章 データの集約 [Data Aggregation]
– 8.1 table 関数
– 8.2 集約のためのヒント
– 8.3 ベクトルないしリストへの関数の適用
– 8.4 行列ないし配列への関数の適用
– 8.5 グループ別の関数適用
– 8.6 reshape パッケージ
– 8.7 R におけるループ処理
第9章 データの整形 [Reshaping Data]
– 9.1 データフレームの変数の修正
– 9.2 変数の再コード化
– 9.3 recode 関数
– 9.4 データフレームの整形
– 9.5 reshape パッケージ
– 9.6 データフレームの結合
– 9.7 merge 関数の内部
訳者あとがき
索引 [Index]

One thought on “P. スペクター [Spector] (2008 / 石田 基広, 石田 和枝 訳 2008) Rデータ自由自在 [原題 Data Manipulation with R]

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください