Home > R Archive

R Archive

Rで統計: CSVファイルの読み込み - read.csv()メソッド

読み込むCSVファイルは2007年度のセリーグの打撃成績の順位です。

参考:2007年度 セントラル・リーグ 個人打撃成績(規定打席以上)

batting2007.csv

順位,打率,安打
1,0.346,193
2,0.343,204
3,0.318,172
4,0.313,177
5,0.31,175
6,0.308,155
7,0.302,122
8,0.302,118
9,0.3,120
10,0.3,139

プロンプト

> read.csv("batting2007.csv")
   順位  打率 安打
1     1 0.346  193
2     2 0.343  204
3     3 0.318  172
4     4 0.313  177
5     5 0.310  175
6     6 0.308  155
7     7 0.302  122
8     8 0.302  118
9     9 0.300  120
10   10 0.300  139
> batting$安打
 [1] 193 204 172 177 175 155 122 118 120 139

read.csv()メソッドでCSVファイルを読み込み、そのデータフレームをbatting変数に格納しています。

実行結果を見ると、ファイル1行目のフィールド(列)名が変数名を表し、2行目以降がテーブル本体を表していることが分かります。これによって、例えば安打の列を抽出したい場合は、batting$安打と指定すればOKです。

ただ、毎回々々「batting$安打」と指定するのは億劫ですので、以下のコマンドで簡略化します。

> attach(batting)
> 安打
 [1] 193 204 172 177 175 155 122 118 120 139
>

attach()関数によってワークスペースにオブジェクトが保存され、データフレーム内の変数名のみでのアクセスが可能になります。

read.csv()メソッドのheader引数にFALSEを指定した場合

read.csv()メソッドはデフォルトでheader引数にTRUEが指定されていますが、以下のようにFALSE(必ず大文字)を指定することも出来ます。その場合の動作は以下のようになります。

> batting <- read.csv("batting2007.csv", header=FALSE)
> batting
     V1    V2   V3
1  順位  打率 安打
2     1 0.346  193
3     2 0.343  204
4     3 0.318  172
5     4 0.313  177
6     5  0.31  175
7     6 0.308  155
8     7 0.302  122
9     8 0.302  118
10    9   0.3  120
11   10   0.3  139
> batting$V3
 [1] 安打 193  204  172  177  175  155  122  118  120  139
Levels: 118 120 122 139 155 172 175 177 193 204 安打
>

ファイル1行目の列名がテーブル本体のデータセットに組み込まれていることが分かります。この場合の列へのアクセスは上の実行結果から、batting$V3と分かります。フィールド(列)名(一行目)を省略したCSVファイルを読み込みたい場合にはこのオプション引数を指定します。

Rで統計: ヒストグラムの描画 - hist()関数

使用データは、ある30点満点のテストの20人分です。

19, 28, 4, 23, 8, 7, 20, 8, 12, 22, 19, 18, 14, 13, 13, 25, 12, 16, 11, 26

プロンプト

hist()関数の引数にベクトル変数を代入することでヒストグラムを描画できます。

> test <- c(19, 28, 4, 23, 8, 7, 20, 8, 12, 22, 19, 18, 14, 13, 13, 25, 12, 16, 11, 26)
> hist(test)
>

実行結果

30点満点テスト20人分の成績のヒストグラム by yukun

横軸が階級値で縦軸が度数(階級に入るデータ数)です。例えば、15x20点の範囲の人が5人いる、と読めます。ただし、左端の0点データは0~5の階級に入ります。ここでは範囲の境界に注意しましょう(主に私が)。

データ作成に使用した乱数生成スクリプト

>>> import random
>>> 
[19, 28, 4, 23, 8, 7, 20, 8, 12, 22, 19, 18, 14, 13, 13, 25, 12, 16, 11, 26]
>>>

つい最近慣れ始めたPythonで書いてしまいました。リスト内包表記が地味に便利なところです。リスト内包表記についてはこちらをご覧ください。→Python: リスト内包表記をfor文に書き換える

そして、乱数モジュールの使い方に関してはこちらを、→Python: 乱数の生成 - random()、randint()、uniform()、seed()メソッド

また、重複のない乱数を生成するスクリプトはこちらをご覧ください。→Python: モジュールにテスト関数を定義 - 重複のない乱数(整数MIN以上MAX以下)の生成

Rで統計: ベクトル変数に対する操作 - 複数データを一括処理

ベクトル変数は複数のデータを1つにまとめた変数で、他言語でいえば配列はリストに相当する機能を備えています。なので「[]」演算子によるベクトル変数の要素、スカラー値へのインデックス指定が可能です。今回はRのベクトル変数内の全要素に対する演算の例を取り上げます。

プロンプト

> vec1 <- c(1, 3, 5, 7, 9) # ベクトル変数の作成。「<-」演算子は代入
> vec1
[1] 1 3 5 7 9
> print(vec1 + 2)
[1]  3  5  7  9 11
> print(vec1 - 2)
[1] -1  1  3  5  7
> print(vec1 * 5)
[1]  5 15 25 35 45
> print(vec1 / 5)
[1] 0.2 0.6 1.0 1.4 1.8
>
> vec2 <- vec1 - 1
> print(vec2)
[1] 0 2 4 6 8
> print(vec1 + vec2) # ベクトル同士の演算
[1]  1  5  9 13 17

ベクトル変数名に対してそのまま演算子が使えるのが直感的で良いですね。

プロンプトを使用する際は、print()関数を使用しなくても、変数名のみで値を出力することが可能ですが、私はRファイルにprint()を書き残す習慣があるので、こちらでも付けてあります。

Rで統計: *.Rソースファイルの読み込みと実行 - source()関数

これまでの例は数行のコマンドでしたのでプロンプトに直接を打っていましたが、何十行というロジックをプロンプトに順々に打っていくのは非効率です。今回は、予め外部のテキストファイルにソースコードを書き、そのファイルをプロンプトから呼び出す手順を次の例で示します。

以下のソースコードを拡張子Rのテキストファイルで保存し、プロンプトから読み込んで実行してみましょう。

test.R

batting2007 <- c(193, 204, 172, 177, 175, 155, 122, 118, 120, 139)
print(batting2007)

このテキストファイルを作業ディレクトリにおきます。なお、作業ディレクトリの設定方法はこちらをご覧ください。→作業ディレクトリの設定と確認 - setwd()、getwd()関数

プロンプト

> source("test.R")
 [1] 193 204 172 177 175 155 122 118 120 139
>

print()関数を用いて画面へ出力しています。

ここで、この状態のままプロンプトで以下のように入力すると、

> summary(batting2007)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.
  118.0   126.2   163.5   157.5   176.5   204.0
> mean(batting2007)
[1] 157.5
>

このように、読み込んだソースファイル中の変数が使えることが分かります。これは、関数宣言等を別ファイルに保存し、プロンプトから呼び出したい場合によく使います。

Rで統計: 作業ディレクトリの設定と確認 - setwd()、getwd()関数

プログラムからテキストやCSVファイル等を読み込む為にファイルパスの指定する際、ファイル名のみで読み込むホームディレクトリのことを作業ディレクトリといい、その設定方法は以下の2種類あります。

RGuiを使用している場合は、[ファイル]→[ディレクトリの変更]から任意のディレクトリを選択。

コマンドで変更する場合はプロンプトで、

> setwd("D:/rtmp")

の様に、setwd()関数の引数にディレクトリのパスを代入することで指定します。

また、作業ディレクトリを確認する関数はgetwd()です。

> getwd()
[1] "D:/rtmp"

getwd は get work directoryの略かな。

あと、Windowsの場合は作業ディレクトリ設定を恒久的に保存する方法のひとつに、Rgui.exeのショートカットのプロパティの作業フォルダにパスを設定する方法があります。

Page 1 of 212

Home > R Archive

バックナンバー
最近のコメント
最近のトラックバック
メタ情報

Return to page top