table(data01$sex, data01$edu)
9 11 12 14 16 18
1 11 1 44 31 63 11
2 4 2 66 92 50 1
a. 基本演算とヴェクトル・行列,データ・フレイムの作成
以下では,Rエディタで基本的なコマンドを書いて実行する例を示す。
ただ計算するだけでなく,具体的な値ではなく変数で式を書く,結果をオブジェクトに格納する,などがコツである。
また,実際のデータ分析での大きなハードルが,データ・ファイルから“データ・フレイム”を作成する事だと思われるので,その点についても簡単に解説する。
データ・フレイムの扱いが出来る様になれば,後はテクストなどを見れば大体の事は出来る筈である。
下の画像では,Rエディタに書いたコマンドを実行して,その結果がR Consoleに出力されている。
加減乗除,自然指数関数(eの68乗),68の2乗,小数第3位を四捨五入して小数第2位までとして表示する関数,の結果が表示されている。
画面をよく見比べて対応する箇所を確認して欲しい。
3.404276e+29 とは,3.404276×10の29乗と云う意味である。また,半角英字の # の後は“コメントアウト”と言って,実行する場合には単にスキップされるので,自由に備忘メモを書く事が出来る。
MS-Excelでもそうだが,具体的な数値の儘では余り高度な事は出来ないので,出来るだけ変数・オブジェクト(xやyなどの文字)に代入・格納した上で数式やコマンド,スクリプトを組み立てると良い。そうすれば類似の処理・操作を繰り返す事が非常に容易になる。
代入を意味する記号は半角英数で <- と書く。代入先が左辺,代入しようとする内容が右辺である。以下に,一旦数値を文字(=変数)に代入した上で,その文字を使って数式を書いて計算をさせている例を掲げる。計算結果は数値で出力される。文字は,大文字と小文字は全て厳格に区別されるので注意する事。
計算結果(処理結果)を更に別の文字(オブジェクト)に格納する事も出来る。
高度な使い方になるほどこの「処理結果をオブジェクトに格納する」と云う事が重要・便利になっていくので,よく慣れるのが良い。
代入式は計算結果を代入するだけであるので,その結果を表示させたい場合は,改めてオブジェクト名だけを指定するか,代入式全体をカッコでくるむ。
上の様にやや込み入った計算は,変数の式で作成しておくと何度も違う例で再利用出来る。
上の例では,a, b, c, dの具体的な数字の部分だけ書き換えれば,以後のスクリプトは其の儘でユールのQやファイ係数と云う統計量を計算させる事が出来る。
何か複雑な,何段階にもわたる計算や処理を行う場合には,途中でその都度オブジェクトに格納しておくと後で便利な事が多い。
Rでは,ヴェクトル,行列の形式で非常に多くの数値データを処理出来るのが大きな長所である。
複数の数値を連結してヴェクトルにする基本的なコマンドは c( ) である(concatenateの略)。
それ以外に,規則的なヴェクトルを作成する seq( ) ,繰り返しを作成する rep( ) などがある。
複数行のコマンドを ; で繋いで一行で書く事が出来るので適宜利用すると見易くなる。
1:5 とは,1から5までの連続する整数値のヴェクトルを意味する。
ヴェクトルの四則演算については例をよく見て理解しよう。
ヴェクトル全体を参照するのではなく,ヴェクトルの一部(要素)を参照したい場合には,z[5]の様に角括弧(bracket)を用いて指定する。bracketの中は複数の要素を指定する事が出来る。
行列と云うのは,2次元のヴェクトルである。
通常の1次元ヴェクトルに対して,matrix( ) と云う関数を使って,適宜 nrow = や ncol = ,byrow = T などのオプションを付けて行列を作成する。
以下の複数の例の違いを読み取って欲しい。
行列は2次元であるので,その要素の指定の仕方も,[ 行, 列] の2次元になる。
以下の例から対応をよく読み取って欲しい。
社会調査のデータ分析をRで行う為には,データファイルを作成して統計ソフトに読み込まなければならない。
RではSPSSなどに比べてこのデータの読み込みの部分が少し分かりにくいかも知れない。
まず最初のデータ・ファイルは,固定長区切りのテキストファイル(*.txt)でも良いが,恐らく一番楽なのは,コンマ区切りファイル(*.csv; comma separated values)であろう。
先頭行に変数名が保存されており,二行目以降に各ケースの変数値がカンマで区切られて記録されていると最も楽である。
拡張子は csv であるが,通常のPCではMS-Excelなどに関連付けられており,普通に開こうとするとそれらのアプリで開かれる事が多い。
しかし中身はただのテキストファイルである。
RはSPSS形式のデータファイルやSTATA形式のデータファイルからの読み込みもひと手間かければ可能であるが,SPSSデータもSTATAデータもcsv形式に簡単に変換できるので(但しラベルなどは削除される),csv形式で用意するのが最も楽であろう。
以下は,演習用データの practice.csv ファイルの内容をテキストエディタで表示させたものの一部である。
このファイルを,read.csv( ) と云う関数を使用して,R内部にデータを取り込む事が出来る。R内部に取り込まれたデータを「データ・フレイム」と呼ぶ。データ・フレイムは,特に保存しない限りはRを終了すると消えるが,Rを起動して,必要な時に read.csv( ) で読み込めば,改めてデータ・フレイムを保存する必要は特に無い。
csvファイルは,Rの作業ディレクトリにコピーするのが楽である。
作業ディレクトリは,コンソール画面で getwd() とすると表示される。
作業ディレクトリを別の場所に変更したい場合は,setwd( ) 関数を使用する。
read.csv( ) で読み込んだ結果は,何か適当な名前(例えば data01 や,より簡単に d01 など)を付けて格納する。
data01 <- read.csv("practice.csv", header = T)
data01とだけ命令すると読み込んだデータ・フレイムを全てコンソール画面に表示するが,しばしば膨大な量になるので,head(data01) とすれば,最初の6行(6レコード)だけ表示する。最初の10行を表示したければ head(data01, 10) とすれば良い。tail(data01) だと最後の6レコードを表示する。
データ・フレイム data01 に何と云う名前の変数が格納されているかを一覧するには,names(data01) とすれば良い。
データ・フレイム中の特定の変数,例えば income と云う名前の変数を指定するには,data01$income の様に,データ・フレイム名とその中での変数名を$で繋いで表現する。
度数分布表(や分割表)を作成する関数 table( ) を使用して data01 の中の変数 edu の度数分布,そして sex と edu の分割表(クロス表)を作成した例が以下である。
変数を指定するのにいちいちデータ・フレイム名とセットで指定しなければならないのは非常に面倒に感じられる。
これを省略する方法もあるが(attach( ) 関数を使うなど),逆に最初のうちは面倒でも常に明示的に指定していた方が,混乱が少なくなるかも知れない。
いちいちデータ・フレイム名を指定する必要があると云う事は,逆に言えば,複数の異なるデータ・ファイルから異なるデータ・フレイム data01,data02 を読み込んで,data01$sex や data02$sex を自由に・同時に参照する事が出来ると云う事である。
いちいちデータ・フレイム名を書くのを省略する方法としては,with( ) 関数を利用する事もお薦めである。table( )関数の場合は,with( )を使った方が情報表示が親切になると云うメリットがある。以下の例で見比べよう。
table(data01$sex, data01$edu)
9 11 12 14 16 18
1 11 1 44 31 63 11
2 4 2 66 92 50 1
with(data01, table(sex, edu))
edu
sex 9 11 12 14 16 18
1 11 1 44 31 63 11
2 4 2 66 92 50 1