SlideShare a Scribd company logo
1 of 17
Download to read offline
Osaka.R#7 初心者講習会資料
                            2012/02/12
                              林真広


インストール
 インストーラのダウンロード
http://www.r-project.org/




                                     どれかを選ぶ
                                    (どれでも同じ)




                                1
※ Windows の場合




※ インストーラの実行時の注意点(windows)
 「インストール中に利用する言語」として Japanese が選択されているが,文字化けが発生する
  ので,English を選択しておく
 あくまで「インストール中に利用する言語」なので,インストール後は日本語化された R を使える




                            2
スクリプトの実行
     スクリプト(コマンド,プログラム,命令ともいう)をコンソール,またはエディタに書き込む
     エディタは,メニューバーから「ファイル>新しいスクリプト」とたどって起動する




                                             エディタ
     コンソール



     エディタに書いたスクリプトは,保存しておけば,一度 R を閉じても,「ファイル>スクリプト
      を開く」で読み込める
     コンソールにスクリプトを書き込んだ場合は,エンターキーを押せば実行される
     エディタに書き込んだ場合は,Ctrl+R(Mac は command+Enter)でカーソルのある行の
      スクリプトが実行される
         範囲を選択して Ctrl+R(Mac は command+Enter)を押せば,選択した範囲すべて
          が実行される
         「編集>カーソル行または選択中の R コードを実行」またはツールバーのボタンでも
          同じ


               TIPS & CAUTIONS!
☆ 大文字小文字,全角半角の区別あり(全角は基本的に使わないほうがいい!)
      特に記号の全角半角に注意が必要
      "”$$!!++--==(()) 見分けがつきますか…?
      変換ではなく IM を On/Off したほうが確実(日本語を使う機会は少ない)




                              3
コンソールの状態




    左は何でも入力できる状態。左端に「>」が表示されている
    右は続きの入力を待っている待機状態。左端に「+」が表示されている




                 TIPS & CAUTIONS!
    ☆ 待機状態の場合,「正しく」続きを入力しなければエラーになる
        「STOP」ボタン,「その他>現在の計算を中断」,Esc キーで待機状態をキャンセ
         ルできる




最初のスクリプト
# print という関数(機能)に"Hello, world!"という文字列を渡す
print("Hello, world!")
# コンソールに"Hello, world!"と表示される
# [1, 2, 5, 4]というベクトルを x という変数に保存
x <- c(1, 2, 5, 4)
# mean という関数に x を入力,出力を y という変数に保存
y <- mean(x)    # 平均値が計算される
# y の中身を表示
y
        R の操作には関数を使う
            基本的な操作は,「関数(値)」と命令するだけ。数学の f(x)と同じ
            さらに f(x)と同様に,入力に対して関数は必ず値を返す(値は数値とは限らない)


                                4
       関数に入力する値を引数(ひきすう)またはオプション,関数が返す値を返り値または戻り
            値と呼ぶ
                mean の例の場合,x という変数が引数,3 という数値が返り値
           複数の引数を関数に入力する場合,区切り文字として「,」を使う
                例えば「mean(x, na.rm=TRUE)」,na.rm は欠損値(NA)を省くか否か




                       TIPS & CAUTIONS!
☆ 「#」を書くと,それ以降はコメントとして扱われる(処理の上で無視される)
☆ 半角のスペースは見やすさのために記号や関数名の前後などに挿入できる
           「1 + 1」「print( "Hello, world!" )」「mean (x)」など
           「x<     -y」「me   an(x)」などはだめ
☆ 改行も適宜挿入できるが,挿入できる場所はコンマや記号の後ろにかぎられる
               慣れないうちは,改行はコンマの後ろだけ,と覚えておく


☆ スペースの使い方などは自分ルールでもいいが,Google's R Style Guide や R
    Coding Conventions などの既存のルールに従うと,読みやすいスクリプトが書ける
    (以下は例)
               一行は 80 文字程度(横スクロールバーが出ない程度の長さ)
               一行が長くなる場合は,コンマの後ろで適宜改行
               2 項演算子(=,+,-,<-など)の前後に半角スペース(「x <- y」や「1 + 1」)
               コンマの後ろに半角スペース(「c(1, 2, 3)」)



関数の使い方
   関数は,関数(引数 1, 引数 2, 引数 3, ...)というふうに使う
   引数は名前を持っていて,関数(名前=引数)という書き方をする

                                       初期値




                    引数の名前




                                       5
TIPS & CAUTIONS!
☆ 引数に初期値が設定されている場合,引数を省略できる
☆ 引数の名前は省略可能だが,省略できない場合もあるので省略しないほうが無難
         例えば 3 つ引数がある関数で第 2 引数を省略する場合,第 3 引数は名前を省
          略できない
         省略すると第 3 引数ではなく第 2 引数とみなされる




変数
   変数は入れ物のようなもの
   変数に入れる実体をオブジェクトと呼ぶ
   新たな変数を作るときは,「新たな変数 <- オブジェクト(または変数)」というふうに書く
   すべての関数は値(オブジェクト)を返すので,これも変数に入れられる
        「新たな変数 <- 関数(引数 1, 引数 2, 引数 3, ...)」とすればいい


オブジェクト
   オブジェクトにはクラス(種類)がある
   もっとも基本的なクラスは数値(numeric),文字列(character),論理(logical)クラス
   他 に 重 要 な ク ラ ス は 因 子 ( factor ) , 行 列 ( matrix ) , リ ス ト ( list ) , デ ー タ フ レ ー ム
    (data.frame)クラス
        ここでいう因子は因子分析の因子とは関係がなく,カテゴリ変数のこと
        行列は二次元の行列
        データフレームは,ケース(行)×変数(列)という形の,通常分析に用いるデータセット
        R を使う用途によってクラスの重要度は異なるので最初からすべて理解する必要はない
   オブジェクトのクラスによって扱いが異なるので,どのクラスのオブジェクトを操作しているのか
    を常に意識しよう




                                          6
理論編――――――――――――――――――――
数値(numeric)クラス
1 + 2
x <- 10 – 5
y <- x + 9
is.numeric(y) # 引数が数値クラスならば TRUE,そうでなければ FALSE を返す
4 * 5 / 10    # 「*」はかけ算,「/」は割り算
(3 + 6) * 2^3 # 「^」は累乗(この場合 2 の 3 乗)。演算の順番は数学と同じで,括弧も使える
c(1, 3) + 2   # [1, 3]というベクトルを作り,1 を足す
z <- 1:5      # [1, 2, 3, 4, 5]というベクトルを作る
z[2] + z[3]   # z の 2 番目の要素と 3 番目の要素を足しあわせる
     R ではほとんどのクラスのオブジェクトがベクトル
     一つの数字でも,長さ 1 のベクトル
     数学のベクトルのように難しく考えるのではなく,複数のオブジェクトをひとまとめにして便利に
      扱える機能と考えよう
     変数[数字]と書けば,その変数の中の,与えた数字の位置にある要素を取り出せる
         この数字を,添字またはインデックスと呼ぶ
行列(matrix)クラス
     2 次元の行列を扱うためのクラス
     行列演算する人は必須
     しない人は要素へのアクセスの仕方だけ覚えておけばだいたい大丈夫
         関数の返り値が行列のことがよくある
mat <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE)
# nrow で行数,ncol で列数を指定(普通はどちらか一方でいい)
# byrow=TRUE にすると,ベクトルを行方向に並べて行列を作る(デフォルトは byrow=FALSE)
mat
mat <- matrix(1:15, nrow=3, ncol=5, byrow=FALSE)
mat
dim(mat)       # 行数,列数を取得
dimnames(mat) <- list(c("r1", "r2", "r3"),
                     c("c1", "c2", "c3", "c4", "c5"))   # 行名,列名を設定
mat[2, 3]      # mat[行, 列]の要素を取り出す
mat[2,]        # 2 行目全体を取り出す
mat[, 3]        # 3 列目全体を取り出す
mat[2, 1:3]        # 2 行目の 1~3 列目の要素を取り出す


                                    7
文字列(character)クラス
"文字列"              # ダブルコーテーションで文字を囲むと,文字列オブジェクトとして扱われる
v1 <- c("名前", "性別", "年齢")
is.character(v1)      # 引数が文字列クラスならば TRUE,そうでなければ FALSE を返す
is.numeric(v1)
v2 <- c("1", "2", "3") # 数値もダブルコーテーションで囲めば文字列オブジェクト
is.numeric(v2)
   ダブルコーテーションを全角にしないよう注意!
        日本語の文字列オブジェクトを作ろうとするときに失敗しやすい
   シングルコーテーションでもいい(「'文字列'」)
        文字列にダブルコーテーションを含めたい場合はシングルコーテーションを使う
        「'文字列の中に"を入れる'」
   文字列オブジェクトもベクトル


論理(logical)クラス
   条件判断や関数のオプションの ON,OFF に使われる
   TRUE,FALSE の 2 種類だけ
   TRUE は「真」,FALSE は「偽」
TRUE
“TRUE”           # 表示の違いに注目
TRUE <- “真” # TRUE,FALSE は変数名にはできない
x <- 4
x == 5
x < 5
y <- x >= 4      # 変数にも入れられる
y                # 論理ベクトル
is.logical(y)
x <- 1:4
x[c(TRUE, TRUE, FALSE, FALSE)] # 添字の代わりに論理ベクトルで要素を選択
x <= 2
x[x <= 2]     # 応用的な要素の選択方法。条件によって要素を選択
print(“R”, quote=TRUE)     # 関数の引数として論理オブジェクトを使う
print(“R”, quote=F)       # 引数の場合,TRUE は T,FALSE は F と省略できる
   省略記法は間違いの元なので最初のうちはあまり使わない方がいい




                                   8
データフレーム(data.frame)クラス
     表形式のデータを扱うためのクラス
     一列が一つの変数
sex <- c("男性", "男性", "男性", "女性", "女性", "女性")
age <- c(20, 35, 50, 42, 31, 22)
df <- data.frame(sex, age)
df
df$sex        # データフレーム内の変数にアクセス
df[["age"]]   # 変数にアクセスするもう一つの方法
colnames(df) # 変数名の取得
colnames(df)[1] <- "性別" # 変数名の変更


df$job <- c(1, 0, 1, 0, 1, 0) # 新しい変数の作成
attach(df)    # データフレーム内の変数を大局的環境に展開
mean(age)     # データフレーム内の変数を直接扱える,が…
age <- c(10, 10, 10, 10, 10, 10)
detach(df)    # attach の解除
df$age        # attach 中の変数の編集は反映されない
     同じ長さのベクトルを引数に取る
     引数は主に数値オブジェクトか文字列オブジェクト
         ただし,文字列オブジェクトはデフォルトでは因子(factor)オブジェクトに変換される
     attach は便利だが,エラーのもとになりやすいので推奨しない


因子(factor)クラス
     文字列オブジェクトに,カテゴリの概念を加えたものと考えればいい
     各種カテゴリカルデータ分析に必要
sex       # 文字列オブジェクト
df$sex    # 因子オブジェクト。表示の違いに注目
summary(df$sex)   # カテゴリの概念があるので,カテゴリごとに集計できる




                                   9
リスト(list)クラス
    各種クラスのオブジェクトをひとまとめにするためのオブジェクト
    データフレームは実はリストの拡張なので,操作方法は似ている
l1 <- list(num=1:5,
         char=c("a", "b", "c", "d"),
         mat=matrix(1:9, ncol=3))   # 「名前=オブジェクト(または変数)」で要素を設定
# リストにはなんでも入る!
# なんらかの統計解析をおこなう関数は,たいてい返り値がリスト
l1
l1[["num"]]
li$num       # 要素へのアクセスの仕方はデータフレームと同じ


実際の分析
data(iris)      # R に組み込まれているデータの読み込み
is.data.frame(iris) # データフレームオブジェクト
summary(iris)         # データフレームの概要
cor(iris$Sepal.Length, iris$Sepal.Width)    # 相関係数の計算


median(iris$Sepal.Length) # 中央値
iris$cat1 <- "high"         # 新しい変数
iris$cat1[iris$Sepal.Length < 5.8] <- "low"
# Sepal.Length が 5.8 以下ならば"low"というカテゴリに


table(iris$Species, iris$cat1)      # クロス表作成




                                       10
実践編――――――――――――――――――――
作業ディレクトリの設定
   作業ディレクトリ(ディレクトリはフォルダとだいたい同じ意味)とは,データの入出力の際に基
    準となるディレクトリ
   作業の前にまず設定しておく
# 現在の作業ディレクトリを返す(Get Working Directory)
getwd()
# 作業ディレクトリの設定(Set Working Directory)
setwd("c:/Users/UserName/Documents")
# R でのディレクトリの区切り文字は"/"もしくは Windows の場合は"¥¥"も可
# ダイアログで対話的にディレクトリを選択し,ディレクトリのパスを返す(Windows 限定?)
choose.dir()
# choose.dir()のファイル版(Mac にもある)
file.choose()
# 対話的にディレクトリを選択し,作業ディレクトリに設定する
setwd(choose.dir())




                TIPS & CAUTIONS!
 ☆ 作業ディレクトリは GUI からも設定できる
         ただし,スクリプトに setwd(…)を書いて保存しておけば,繰り返し作業する場
          合に設定が楽




                                   11
分析例
data(Rabbit, package="MASS")   # 組み込みサンプルデータの読み込み


t.test(BPchange ~ Treatment, data=Rabbit, var.equal=TRUE)
# t 検定,var.equal=FALSE にするとウェルチの検定(等分散性を仮定しない)
aov1 <- aov(BPchange ~ Animal, data=Rabbit)   # 分散分析
summary(aov1)     # 結果の概要


lm1 <- lm(BPchange ~ Dose + Animal * Treatment, data=Rabbit)   # 重回帰分析
summary(lm1)      # 結果の概要
   多くの統計解析関数で,「被説明変数 ~ 説明変数」あるいは「被説明変数 ~ グループ変数」
    という書き方をする。必須!


 パッケージのインストール,読み込み
   パッケージの追加により機能を増やせる(最初から入っているパッケージもある)
       メニューバーから”パッケージ>パッケージのインストール”
       どのミラーからダウンロードするかを選ぶ。ダウンロードできるものはどこでも同じなので,
        Japan の中から好きなものを選ぶ
   関数を使ってインストールすることもできる
install.packages("Hmisc")
# 一覧から探す必要がないのでおすすめ
install.packages(c("memisc", "car"))
# 複数まとめてインストールすることもできる


library(memisc)    # パッケージの読み込み


テキストデータの読み込み
read.csv(file.choose(), header=TRUE)
# 対話的にファイルを選択してデータを読み込み
read.csv("sample.csv", header=TRUE)
# 作業ディレクトリから sample.csv を読み込み
# header オプションは一行目を列の名前(変数名)として読み込むかどうか
read.delim("sample.txt", header=TRUE) # tab 区切りの場合
# data.frame 形式で読み込まれる




                                      12
TIPS & CAUTIONS!
 ☆ データがうまく読み込めない場合
        文字化け…文字コードが合っていない。fileEncoding オプションに文字コー
         ドを指定する。日本語の場合,文字コードは shift-jis か UTF-8
            read.csv("sample.csv", fileEncoding="UTF-8")
        欠 損 値 の 処 理 … 欠損 値が 含 まれ る 場 合 は,欠 損値 に あ ててい る 文 字 を
         na.strings オプションに設定する
            read.csv("sample.csv", na.strings="NA")
        変数がおかしい…変数が数値の場合,変数の中に全角数字がないか,文字が
         含まれていないかを確認する



他のソフトウェアのデータの読み込み
   R は様々な形式のデータを読み込むことができる
   サンプルデータは http://www.spss.co.jp/support/sample.html からダウンロード
   作業ディレクトリに保存しておく






library(foreign)    # 他形式のデータの入出力用パッケージ
d1 <- read.spss("bank.sav", to.data.frame=TRUE, reencode="shift-jis")
# reencode は文字コードの指定。Windows の場合はたいていなくても大丈夫
# 他にも read.xport,read.dta などがある


データの書き込み
write.csv(d1, "sample.csv", row.names=FALSE)
# 作業ディレクトリに d1 を csv で保存
write.table(d1, "sample.dat", row.names=FALSE, sep="¥t")
# 作業ディレクトリに d1 を tab 区切りテキストで保存



                                    13
データの操作
summary(Rabbit)    # 全データの要約統計量
head(Rabbit)       # データの先頭数行を表示。末尾は tail(...)
colnames(Rabbit)   # データに含まれる変数の名前を取得


Rabbit$Animal          # 変数へのアクセス
Rabbit$Animal[5]       # 変数の 5 番目のケース


データの閲覧(単純集計表)
# カテゴリ変数の場合
table(Rabbit$Animal)
summary(Rabbit$Animal)


# 連続変数の場合
table(Rabbit$BPchange)    # 実用的ではない
stem(Rabbit$BPchange)     # 幹葉図
boxplot(Rabbit$BPchange) # 箱ひげ図
hist(Rabbit$BPchange, breaks="Scott")    # ヒストグラム
# breaks は区切り方の指定。デフォルトの方法は古典的すぎるので変更


データの閲覧(記述統計)
summary(Rabbit$Dose)
mean(Rabbit$Dose, na.rm=TRUE)
# na.rm オプションは欠損値を省くかどうか
# このデータには欠損値がないのでどちらでも結果は変わらない
sd(Rabbit$Dose, na.rm=TRUE)     # 不偏標準偏差
# 他にも var(),max(),min(),range()などがある
# na.rm はこれら記述統計の関数では大概使えるが,常に使えるわけではない


データの閲覧(クロス集計表)
table(Rabbit$Treatment, Rabbit$Animal)   # 行,列の順番


library(memisc)    # memisc は社会科学系で便利な機能がまとめられている
aggregate(Animal ~ Treatment, data=Rabbit)   # 返り値は data.frame
aggregate(percent(Animal) ~ Treatment, data=Rabbit)   # パーセントで表示



                                    14
変数のリコード
   リコードの方法はたくさんあるが,memisc パッケージの recode 関数が最も汎用的
   Hmisc,car パッケージにも recode 関数がある。先に読み込んだものが後に読み込んだもの
    で上書きされるので,memisc を最後に読み込むように!
Rabbit$Dose3 <- recode(Rabbit$Dose,
                  "低" <- range(min , 13),
                  "中" <- range(13.1, 51),
                  "高" <- range(51.1, max))
# 「Rabbit$新しい変数名 <- 新しい変数」でデータフレームに変数を追加
Rabbit$Animal2 <- recode(Rabbit$Animal,
            "Animal1" <- c("R1", "R2", "R3"),
            "Animal2" <- c("R4", "R5"))
Summary(Rabbit)   # データを確認
   R ではカテゴリ変数と連続変数が明確に区別されることに注意!




                                      15
ドキュメント編――――――――――――――――――
help 等のドキュメントの使い方
   関数を初めて使うとき,使い方がよくわからないとき,エラーが出るとき,必ず help を読む!
   特に初めて使う関数の help は,流し読みでもいいから絶対に目を通す!
help(var)
?var    # help(var)と同じ。利便性のための省略形。


help の読み方
   すべて理解する必要はない
   Usage には関数の使い方が書いてある
       引数のクラスによって使い方がちがう関数の場合,クラス別の使い方が書いてある(ことも
        ある)
   最も重要なのは Arguments
       引数の説明が書いてある
       最も多いエラーは Type Error(数値が必要なところに因子を渡す等,クラスの間違い)
       エラーなら実害はないが,期待とはちがう処理が行われていることも…
       どの引数にどのクラスのオブジェクトを渡さなければならないかを確認する!
   Value には返り値の詳細が書いてあるのでこれも重要
   References には参考になる論文や web ページが書いてある
   See Also には似た機能を持つ関数や関連する関数が書いてある
   Example は二番目に重要
       文章を読んで分からなくても,実際に動かしてみたら分かることがよくある
       example 関数は,help 内の example をまとめて実行してくれる
example(lm)


新しいパッケージを使うとき(demo,vignette,パッケージの help)
   使ってみたいパッケージの情報がウェブや書籍で見つからない場合がある
       そうでなくとも新しいパッケージは使い方がよくわからないもの
   デモ,ビネット(vignette),パッケージの help を見れば多くの情報を得ることができる
   ただし,デモとビニエットは必ずあるわけではない
demo(package="graphics")     # graphics パッケージが持っているデモの一覧
demo("graphics")
vignette(package="memisc")    # memisc パッケージが持っているビニエットの一覧
vignette("anes48")
help(package="Hmisc")      # Hmisc パッケージのヘルプ

                                   16
書籍,ウェブサイト編――――――――――――――
   書籍
『R によるやさしい統計学』山田 剛史, 杉澤 武俊, 村井 潤一郎 / オーム社
『R 初心者のための ABC』A.ジュール (著), E.イエノウ (著), E.ミースターズ (著), 石田 基
    広 (翻訳), 石田 和枝 (翻訳) / シュプリンガー・ジャパン株式会社
『R 言語逆引きハンドブック』石田基広 / シーアンドアール研究所


※ シュプリンガー・ジャパン撤退にともない,シュプリンガー・ジャパンから出ている訳書は現在品
    薄になっています。そのうち事業譲渡先の丸善から発売される予定です。


   ウェブサイト
R-Tips http://cse.naro.affrc.go.jp/takezawa/r-tips/r2.html
JIN’S PAGE http://www1.doshisha.ac.jp/~mjin/R/
『R 基本統計関数マニュアル』
     http://cran.r-project.org/doc/contrib/manuals-jp/Mase-Rstatman.pdf




                                    17

More Related Content

What's hot

これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールNobuhisa Koizumi
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
Tokyor60 r data_science_part1
Tokyor60 r data_science_part1Tokyor60 r data_science_part1
Tokyor60 r data_science_part1Yohei Sato
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション考司 小杉
 
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツShuyo Nakatani
 
やさしく知りたいC言語
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語uru nru
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用Nobuaki Oshiro
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案yushin_hirano
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章Tomonobu_Hirano
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1大貴 末廣
 
DS Exercise Course 2
DS Exercise Course 2DS Exercise Course 2
DS Exercise Course 2大貴 末廣
 
Python基礎その2
Python基礎その2Python基礎その2
Python基礎その2大貴 末廣
 
10分で分かるr言語入門ver2.5
10分で分かるr言語入門ver2.510分で分かるr言語入門ver2.5
10分で分かるr言語入門ver2.5Nobuaki Oshiro
 
DS Exercise Course 3
DS Exercise Course 3DS Exercise Course 3
DS Exercise Course 3大貴 末廣
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるHideyuki Tanaka
 
Unity + C#講座①
Unity + C#講座①Unity + C#講座①
Unity + C#講座①Yu Yu
 

What's hot (20)

これからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツールこれからの「言語」の話をしよう ―― 未来を生きるためのツール
これからの「言語」の話をしよう ―― 未来を生きるためのツール
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
Tokyor60 r data_science_part1
Tokyor60 r data_science_part1Tokyor60 r data_science_part1
Tokyor60 r data_science_part1
 
C言語講習会2
C言語講習会2C言語講習会2
C言語講習会2
 
C言語講習会3
C言語講習会3C言語講習会3
C言語講習会3
 
Yamadai.Rデモンストレーションセッション
Yamadai.RデモンストレーションセッションYamadai.Rデモンストレーションセッション
Yamadai.Rデモンストレーションセッション
 
数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ数式をnumpyに落としこむコツ
数式をnumpyに落としこむコツ
 
やさしく知りたいC言語
やさしく知りたいC言語やさしく知りたいC言語
やさしく知りたいC言語
 
10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用10分で分かるr言語入門ver2 upload用
10分で分かるr言語入門ver2 upload用
 
第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案第一回Data mining勉強会 -第二章 - 原案
第一回Data mining勉強会 -第二章 - 原案
 
Tokyo r33 beginner
Tokyo r33 beginnerTokyo r33 beginner
Tokyo r33 beginner
 
第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章第一回Data mining勉強会 -第二章
第一回Data mining勉強会 -第二章
 
C言語講習会4
C言語講習会4C言語講習会4
C言語講習会4
 
Python基礎その1
Python基礎その1Python基礎その1
Python基礎その1
 
DS Exercise Course 2
DS Exercise Course 2DS Exercise Course 2
DS Exercise Course 2
 
Python基礎その2
Python基礎その2Python基礎その2
Python基礎その2
 
10分で分かるr言語入門ver2.5
10分で分かるr言語入門ver2.510分で分かるr言語入門ver2.5
10分で分かるr言語入門ver2.5
 
DS Exercise Course 3
DS Exercise Course 3DS Exercise Course 3
DS Exercise Course 3
 
C++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISるC++コミュニティーの中心でC++をDISる
C++コミュニティーの中心でC++をDISる
 
Unity + C#講座①
Unity + C#講座①Unity + C#講座①
Unity + C#講座①
 

Similar to 初心者講習会資料(Osaka.R#7)

初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)Masahiro Hayashi
 
第一回ゆるふわーる
第一回ゆるふわーる第一回ゆるふわーる
第一回ゆるふわーるSachiko Hirata
 
Ruby紹介3(pdf)
Ruby紹介3(pdf)Ruby紹介3(pdf)
Ruby紹介3(pdf)Gohryuh
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Ransui Iso
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1Susisu
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3Kenta Hattori
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門Takashi Kitano
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜ericsagnes
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)YoheiOkuyama
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードShigenori Sagawa
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Prunus 1350
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Ransui Iso
 
Lisp batton - Common LISP
Lisp batton - Common LISPLisp batton - Common LISP
Lisp batton - Common LISPMasaomi CHIBA
 
プログラミング言語Scala
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語ScalaTanUkkii
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編wada, kazumi
 
Erlangやってみた
ErlangやってみたErlangやってみた
Erlangやってみたina job
 

Similar to 初心者講習会資料(Osaka.R#7) (20)

初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 
第一回ゆるふわーる
第一回ゆるふわーる第一回ゆるふわーる
第一回ゆるふわーる
 
Tokyor23 doradora09
Tokyor23 doradora09Tokyor23 doradora09
Tokyor23 doradora09
 
Ruby紹介3(pdf)
Ruby紹介3(pdf)Ruby紹介3(pdf)
Ruby紹介3(pdf)
 
Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3Lisp Tutorial for Pythonista : Day 3
Lisp Tutorial for Pythonista : Day 3
 
JavaScript 講習会 #1
JavaScript 講習会 #1JavaScript 講習会 #1
JavaScript 講習会 #1
 
言語処理系入門3
言語処理系入門3言語処理系入門3
言語処理系入門3
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
 
eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜eZ Publish勉強会9月〜テンプレート言語〜
eZ Publish勉強会9月〜テンプレート言語〜
 
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
今さら聞けないHadoop勉強会第3回 セントラルソフト株式会社(20120327)
 
プログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコードプログラムの処方箋~健康なコードと病んだコード
プログラムの処方箋~健康なコードと病んだコード
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
ATN No.2 Scala事始め
ATN No.2 Scala事始めATN No.2 Scala事始め
ATN No.2 Scala事始め
 
Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2Lisp tutorial for Pythonista : Day 2
Lisp tutorial for Pythonista : Day 2
 
Lisp batton - Common LISP
Lisp batton - Common LISPLisp batton - Common LISP
Lisp batton - Common LISP
 
Python opt
Python optPython opt
Python opt
 
プログラミング言語Scala
プログラミング言語Scalaプログラミング言語Scala
プログラミング言語Scala
 
Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編Rプログラミング02 データ入出力編
Rプログラミング02 データ入出力編
 
Erlangやってみた
ErlangやってみたErlangやってみた
Erlangやってみた
 

More from Masahiro Hayashi

オレオレR-GUIを作りたい
オレオレR-GUIを作りたいオレオレR-GUIを作りたい
オレオレR-GUIを作りたいMasahiro Hayashi
 
Rzパッケージの紹介
Rzパッケージの紹介Rzパッケージの紹介
Rzパッケージの紹介Masahiro Hayashi
 
重回帰職人の朝は早い
重回帰職人の朝は早い重回帰職人の朝は早い
重回帰職人の朝は早いMasahiro Hayashi
 
Rzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイスRzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイスMasahiro Hayashi
 
はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力Masahiro Hayashi
 

More from Masahiro Hayashi (6)

オレオレR-GUIを作りたい
オレオレR-GUIを作りたいオレオレR-GUIを作りたい
オレオレR-GUIを作りたい
 
Rzパッケージの紹介
Rzパッケージの紹介Rzパッケージの紹介
Rzパッケージの紹介
 
重回帰職人の朝は早い
重回帰職人の朝は早い重回帰職人の朝は早い
重回帰職人の朝は早い
 
Rzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイスRzパッケージ―spssのようなデータ管理インターフェイス
Rzパッケージ―spssのようなデータ管理インターフェイス
 
はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力はじめてでもわかるデータ入出力
はじめてでもわかるデータ入出力
 
RGtk2入門
RGtk2入門RGtk2入門
RGtk2入門
 

初心者講習会資料(Osaka.R#7)

  • 1. Osaka.R#7 初心者講習会資料 2012/02/12 林真広 インストール  インストーラのダウンロード http://www.r-project.org/ どれかを選ぶ (どれでも同じ) 1
  • 2. ※ Windows の場合 ※ インストーラの実行時の注意点(windows)  「インストール中に利用する言語」として Japanese が選択されているが,文字化けが発生する ので,English を選択しておく  あくまで「インストール中に利用する言語」なので,インストール後は日本語化された R を使える 2
  • 3. スクリプトの実行  スクリプト(コマンド,プログラム,命令ともいう)をコンソール,またはエディタに書き込む  エディタは,メニューバーから「ファイル>新しいスクリプト」とたどって起動する エディタ コンソール  エディタに書いたスクリプトは,保存しておけば,一度 R を閉じても,「ファイル>スクリプト を開く」で読み込める  コンソールにスクリプトを書き込んだ場合は,エンターキーを押せば実行される  エディタに書き込んだ場合は,Ctrl+R(Mac は command+Enter)でカーソルのある行の スクリプトが実行される  範囲を選択して Ctrl+R(Mac は command+Enter)を押せば,選択した範囲すべて が実行される  「編集>カーソル行または選択中の R コードを実行」またはツールバーのボタンでも 同じ TIPS & CAUTIONS! ☆ 大文字小文字,全角半角の区別あり(全角は基本的に使わないほうがいい!)  特に記号の全角半角に注意が必要  "”$$!!++--==(()) 見分けがつきますか…?  変換ではなく IM を On/Off したほうが確実(日本語を使う機会は少ない) 3
  • 4. コンソールの状態  左は何でも入力できる状態。左端に「>」が表示されている  右は続きの入力を待っている待機状態。左端に「+」が表示されている TIPS & CAUTIONS! ☆ 待機状態の場合,「正しく」続きを入力しなければエラーになる  「STOP」ボタン,「その他>現在の計算を中断」,Esc キーで待機状態をキャンセ ルできる 最初のスクリプト # print という関数(機能)に"Hello, world!"という文字列を渡す print("Hello, world!") # コンソールに"Hello, world!"と表示される # [1, 2, 5, 4]というベクトルを x という変数に保存 x <- c(1, 2, 5, 4) # mean という関数に x を入力,出力を y という変数に保存 y <- mean(x) # 平均値が計算される # y の中身を表示 y  R の操作には関数を使う  基本的な操作は,「関数(値)」と命令するだけ。数学の f(x)と同じ  さらに f(x)と同様に,入力に対して関数は必ず値を返す(値は数値とは限らない) 4
  • 5. 関数に入力する値を引数(ひきすう)またはオプション,関数が返す値を返り値または戻り 値と呼ぶ  mean の例の場合,x という変数が引数,3 という数値が返り値  複数の引数を関数に入力する場合,区切り文字として「,」を使う  例えば「mean(x, na.rm=TRUE)」,na.rm は欠損値(NA)を省くか否か TIPS & CAUTIONS! ☆ 「#」を書くと,それ以降はコメントとして扱われる(処理の上で無視される) ☆ 半角のスペースは見やすさのために記号や関数名の前後などに挿入できる  「1 + 1」「print( "Hello, world!" )」「mean (x)」など  「x< -y」「me an(x)」などはだめ ☆ 改行も適宜挿入できるが,挿入できる場所はコンマや記号の後ろにかぎられる  慣れないうちは,改行はコンマの後ろだけ,と覚えておく ☆ スペースの使い方などは自分ルールでもいいが,Google's R Style Guide や R Coding Conventions などの既存のルールに従うと,読みやすいスクリプトが書ける (以下は例)  一行は 80 文字程度(横スクロールバーが出ない程度の長さ)  一行が長くなる場合は,コンマの後ろで適宜改行  2 項演算子(=,+,-,<-など)の前後に半角スペース(「x <- y」や「1 + 1」)  コンマの後ろに半角スペース(「c(1, 2, 3)」) 関数の使い方  関数は,関数(引数 1, 引数 2, 引数 3, ...)というふうに使う  引数は名前を持っていて,関数(名前=引数)という書き方をする 初期値 引数の名前 5
  • 6. TIPS & CAUTIONS! ☆ 引数に初期値が設定されている場合,引数を省略できる ☆ 引数の名前は省略可能だが,省略できない場合もあるので省略しないほうが無難  例えば 3 つ引数がある関数で第 2 引数を省略する場合,第 3 引数は名前を省 略できない  省略すると第 3 引数ではなく第 2 引数とみなされる 変数  変数は入れ物のようなもの  変数に入れる実体をオブジェクトと呼ぶ  新たな変数を作るときは,「新たな変数 <- オブジェクト(または変数)」というふうに書く  すべての関数は値(オブジェクト)を返すので,これも変数に入れられる  「新たな変数 <- 関数(引数 1, 引数 2, 引数 3, ...)」とすればいい オブジェクト  オブジェクトにはクラス(種類)がある  もっとも基本的なクラスは数値(numeric),文字列(character),論理(logical)クラス  他 に 重 要 な ク ラ ス は 因 子 ( factor ) , 行 列 ( matrix ) , リ ス ト ( list ) , デ ー タ フ レ ー ム (data.frame)クラス  ここでいう因子は因子分析の因子とは関係がなく,カテゴリ変数のこと  行列は二次元の行列  データフレームは,ケース(行)×変数(列)という形の,通常分析に用いるデータセット  R を使う用途によってクラスの重要度は異なるので最初からすべて理解する必要はない  オブジェクトのクラスによって扱いが異なるので,どのクラスのオブジェクトを操作しているのか を常に意識しよう 6
  • 7. 理論編―――――――――――――――――――― 数値(numeric)クラス 1 + 2 x <- 10 – 5 y <- x + 9 is.numeric(y) # 引数が数値クラスならば TRUE,そうでなければ FALSE を返す 4 * 5 / 10 # 「*」はかけ算,「/」は割り算 (3 + 6) * 2^3 # 「^」は累乗(この場合 2 の 3 乗)。演算の順番は数学と同じで,括弧も使える c(1, 3) + 2 # [1, 3]というベクトルを作り,1 を足す z <- 1:5 # [1, 2, 3, 4, 5]というベクトルを作る z[2] + z[3] # z の 2 番目の要素と 3 番目の要素を足しあわせる  R ではほとんどのクラスのオブジェクトがベクトル  一つの数字でも,長さ 1 のベクトル  数学のベクトルのように難しく考えるのではなく,複数のオブジェクトをひとまとめにして便利に 扱える機能と考えよう  変数[数字]と書けば,その変数の中の,与えた数字の位置にある要素を取り出せる  この数字を,添字またはインデックスと呼ぶ 行列(matrix)クラス  2 次元の行列を扱うためのクラス  行列演算する人は必須  しない人は要素へのアクセスの仕方だけ覚えておけばだいたい大丈夫  関数の返り値が行列のことがよくある mat <- matrix(1:15, nrow=3, ncol=5, byrow=TRUE) # nrow で行数,ncol で列数を指定(普通はどちらか一方でいい) # byrow=TRUE にすると,ベクトルを行方向に並べて行列を作る(デフォルトは byrow=FALSE) mat mat <- matrix(1:15, nrow=3, ncol=5, byrow=FALSE) mat dim(mat) # 行数,列数を取得 dimnames(mat) <- list(c("r1", "r2", "r3"), c("c1", "c2", "c3", "c4", "c5")) # 行名,列名を設定 mat[2, 3] # mat[行, 列]の要素を取り出す mat[2,] # 2 行目全体を取り出す mat[, 3] # 3 列目全体を取り出す mat[2, 1:3] # 2 行目の 1~3 列目の要素を取り出す 7
  • 8. 文字列(character)クラス "文字列" # ダブルコーテーションで文字を囲むと,文字列オブジェクトとして扱われる v1 <- c("名前", "性別", "年齢") is.character(v1) # 引数が文字列クラスならば TRUE,そうでなければ FALSE を返す is.numeric(v1) v2 <- c("1", "2", "3") # 数値もダブルコーテーションで囲めば文字列オブジェクト is.numeric(v2)  ダブルコーテーションを全角にしないよう注意!  日本語の文字列オブジェクトを作ろうとするときに失敗しやすい  シングルコーテーションでもいい(「'文字列'」)  文字列にダブルコーテーションを含めたい場合はシングルコーテーションを使う  「'文字列の中に"を入れる'」  文字列オブジェクトもベクトル 論理(logical)クラス  条件判断や関数のオプションの ON,OFF に使われる  TRUE,FALSE の 2 種類だけ  TRUE は「真」,FALSE は「偽」 TRUE “TRUE” # 表示の違いに注目 TRUE <- “真” # TRUE,FALSE は変数名にはできない x <- 4 x == 5 x < 5 y <- x >= 4 # 変数にも入れられる y # 論理ベクトル is.logical(y) x <- 1:4 x[c(TRUE, TRUE, FALSE, FALSE)] # 添字の代わりに論理ベクトルで要素を選択 x <= 2 x[x <= 2] # 応用的な要素の選択方法。条件によって要素を選択 print(“R”, quote=TRUE) # 関数の引数として論理オブジェクトを使う print(“R”, quote=F) # 引数の場合,TRUE は T,FALSE は F と省略できる  省略記法は間違いの元なので最初のうちはあまり使わない方がいい 8
  • 9. データフレーム(data.frame)クラス  表形式のデータを扱うためのクラス  一列が一つの変数 sex <- c("男性", "男性", "男性", "女性", "女性", "女性") age <- c(20, 35, 50, 42, 31, 22) df <- data.frame(sex, age) df df$sex # データフレーム内の変数にアクセス df[["age"]] # 変数にアクセスするもう一つの方法 colnames(df) # 変数名の取得 colnames(df)[1] <- "性別" # 変数名の変更 df$job <- c(1, 0, 1, 0, 1, 0) # 新しい変数の作成 attach(df) # データフレーム内の変数を大局的環境に展開 mean(age) # データフレーム内の変数を直接扱える,が… age <- c(10, 10, 10, 10, 10, 10) detach(df) # attach の解除 df$age # attach 中の変数の編集は反映されない  同じ長さのベクトルを引数に取る  引数は主に数値オブジェクトか文字列オブジェクト  ただし,文字列オブジェクトはデフォルトでは因子(factor)オブジェクトに変換される  attach は便利だが,エラーのもとになりやすいので推奨しない 因子(factor)クラス  文字列オブジェクトに,カテゴリの概念を加えたものと考えればいい  各種カテゴリカルデータ分析に必要 sex # 文字列オブジェクト df$sex # 因子オブジェクト。表示の違いに注目 summary(df$sex) # カテゴリの概念があるので,カテゴリごとに集計できる 9
  • 10. リスト(list)クラス  各種クラスのオブジェクトをひとまとめにするためのオブジェクト  データフレームは実はリストの拡張なので,操作方法は似ている l1 <- list(num=1:5, char=c("a", "b", "c", "d"), mat=matrix(1:9, ncol=3)) # 「名前=オブジェクト(または変数)」で要素を設定 # リストにはなんでも入る! # なんらかの統計解析をおこなう関数は,たいてい返り値がリスト l1 l1[["num"]] li$num # 要素へのアクセスの仕方はデータフレームと同じ 実際の分析 data(iris) # R に組み込まれているデータの読み込み is.data.frame(iris) # データフレームオブジェクト summary(iris) # データフレームの概要 cor(iris$Sepal.Length, iris$Sepal.Width) # 相関係数の計算 median(iris$Sepal.Length) # 中央値 iris$cat1 <- "high" # 新しい変数 iris$cat1[iris$Sepal.Length < 5.8] <- "low" # Sepal.Length が 5.8 以下ならば"low"というカテゴリに table(iris$Species, iris$cat1) # クロス表作成 10
  • 11. 実践編―――――――――――――――――――― 作業ディレクトリの設定  作業ディレクトリ(ディレクトリはフォルダとだいたい同じ意味)とは,データの入出力の際に基 準となるディレクトリ  作業の前にまず設定しておく # 現在の作業ディレクトリを返す(Get Working Directory) getwd() # 作業ディレクトリの設定(Set Working Directory) setwd("c:/Users/UserName/Documents") # R でのディレクトリの区切り文字は"/"もしくは Windows の場合は"¥¥"も可 # ダイアログで対話的にディレクトリを選択し,ディレクトリのパスを返す(Windows 限定?) choose.dir() # choose.dir()のファイル版(Mac にもある) file.choose() # 対話的にディレクトリを選択し,作業ディレクトリに設定する setwd(choose.dir()) TIPS & CAUTIONS! ☆ 作業ディレクトリは GUI からも設定できる  ただし,スクリプトに setwd(…)を書いて保存しておけば,繰り返し作業する場 合に設定が楽 11
  • 12. 分析例 data(Rabbit, package="MASS") # 組み込みサンプルデータの読み込み t.test(BPchange ~ Treatment, data=Rabbit, var.equal=TRUE) # t 検定,var.equal=FALSE にするとウェルチの検定(等分散性を仮定しない) aov1 <- aov(BPchange ~ Animal, data=Rabbit) # 分散分析 summary(aov1) # 結果の概要 lm1 <- lm(BPchange ~ Dose + Animal * Treatment, data=Rabbit) # 重回帰分析 summary(lm1) # 結果の概要  多くの統計解析関数で,「被説明変数 ~ 説明変数」あるいは「被説明変数 ~ グループ変数」 という書き方をする。必須! パッケージのインストール,読み込み  パッケージの追加により機能を増やせる(最初から入っているパッケージもある)  メニューバーから”パッケージ>パッケージのインストール”  どのミラーからダウンロードするかを選ぶ。ダウンロードできるものはどこでも同じなので, Japan の中から好きなものを選ぶ  関数を使ってインストールすることもできる install.packages("Hmisc") # 一覧から探す必要がないのでおすすめ install.packages(c("memisc", "car")) # 複数まとめてインストールすることもできる library(memisc) # パッケージの読み込み テキストデータの読み込み read.csv(file.choose(), header=TRUE) # 対話的にファイルを選択してデータを読み込み read.csv("sample.csv", header=TRUE) # 作業ディレクトリから sample.csv を読み込み # header オプションは一行目を列の名前(変数名)として読み込むかどうか read.delim("sample.txt", header=TRUE) # tab 区切りの場合 # data.frame 形式で読み込まれる 12
  • 13. TIPS & CAUTIONS! ☆ データがうまく読み込めない場合  文字化け…文字コードが合っていない。fileEncoding オプションに文字コー ドを指定する。日本語の場合,文字コードは shift-jis か UTF-8  read.csv("sample.csv", fileEncoding="UTF-8")  欠 損 値 の 処 理 … 欠損 値が 含 まれ る 場 合 は,欠 損値 に あ ててい る 文 字 を na.strings オプションに設定する  read.csv("sample.csv", na.strings="NA")  変数がおかしい…変数が数値の場合,変数の中に全角数字がないか,文字が 含まれていないかを確認する 他のソフトウェアのデータの読み込み  R は様々な形式のデータを読み込むことができる  サンプルデータは http://www.spss.co.jp/support/sample.html からダウンロード  作業ディレクトリに保存しておく  library(foreign) # 他形式のデータの入出力用パッケージ d1 <- read.spss("bank.sav", to.data.frame=TRUE, reencode="shift-jis") # reencode は文字コードの指定。Windows の場合はたいていなくても大丈夫 # 他にも read.xport,read.dta などがある データの書き込み write.csv(d1, "sample.csv", row.names=FALSE) # 作業ディレクトリに d1 を csv で保存 write.table(d1, "sample.dat", row.names=FALSE, sep="¥t") # 作業ディレクトリに d1 を tab 区切りテキストで保存 13
  • 14. データの操作 summary(Rabbit) # 全データの要約統計量 head(Rabbit) # データの先頭数行を表示。末尾は tail(...) colnames(Rabbit) # データに含まれる変数の名前を取得 Rabbit$Animal # 変数へのアクセス Rabbit$Animal[5] # 変数の 5 番目のケース データの閲覧(単純集計表) # カテゴリ変数の場合 table(Rabbit$Animal) summary(Rabbit$Animal) # 連続変数の場合 table(Rabbit$BPchange) # 実用的ではない stem(Rabbit$BPchange) # 幹葉図 boxplot(Rabbit$BPchange) # 箱ひげ図 hist(Rabbit$BPchange, breaks="Scott") # ヒストグラム # breaks は区切り方の指定。デフォルトの方法は古典的すぎるので変更 データの閲覧(記述統計) summary(Rabbit$Dose) mean(Rabbit$Dose, na.rm=TRUE) # na.rm オプションは欠損値を省くかどうか # このデータには欠損値がないのでどちらでも結果は変わらない sd(Rabbit$Dose, na.rm=TRUE) # 不偏標準偏差 # 他にも var(),max(),min(),range()などがある # na.rm はこれら記述統計の関数では大概使えるが,常に使えるわけではない データの閲覧(クロス集計表) table(Rabbit$Treatment, Rabbit$Animal) # 行,列の順番 library(memisc) # memisc は社会科学系で便利な機能がまとめられている aggregate(Animal ~ Treatment, data=Rabbit) # 返り値は data.frame aggregate(percent(Animal) ~ Treatment, data=Rabbit) # パーセントで表示 14
  • 15. 変数のリコード  リコードの方法はたくさんあるが,memisc パッケージの recode 関数が最も汎用的  Hmisc,car パッケージにも recode 関数がある。先に読み込んだものが後に読み込んだもの で上書きされるので,memisc を最後に読み込むように! Rabbit$Dose3 <- recode(Rabbit$Dose, "低" <- range(min , 13), "中" <- range(13.1, 51), "高" <- range(51.1, max)) # 「Rabbit$新しい変数名 <- 新しい変数」でデータフレームに変数を追加 Rabbit$Animal2 <- recode(Rabbit$Animal, "Animal1" <- c("R1", "R2", "R3"), "Animal2" <- c("R4", "R5")) Summary(Rabbit) # データを確認  R ではカテゴリ変数と連続変数が明確に区別されることに注意! 15
  • 16. ドキュメント編―――――――――――――――――― help 等のドキュメントの使い方  関数を初めて使うとき,使い方がよくわからないとき,エラーが出るとき,必ず help を読む!  特に初めて使う関数の help は,流し読みでもいいから絶対に目を通す! help(var) ?var # help(var)と同じ。利便性のための省略形。 help の読み方  すべて理解する必要はない  Usage には関数の使い方が書いてある  引数のクラスによって使い方がちがう関数の場合,クラス別の使い方が書いてある(ことも ある)  最も重要なのは Arguments  引数の説明が書いてある  最も多いエラーは Type Error(数値が必要なところに因子を渡す等,クラスの間違い)  エラーなら実害はないが,期待とはちがう処理が行われていることも…  どの引数にどのクラスのオブジェクトを渡さなければならないかを確認する!  Value には返り値の詳細が書いてあるのでこれも重要  References には参考になる論文や web ページが書いてある  See Also には似た機能を持つ関数や関連する関数が書いてある  Example は二番目に重要  文章を読んで分からなくても,実際に動かしてみたら分かることがよくある  example 関数は,help 内の example をまとめて実行してくれる example(lm) 新しいパッケージを使うとき(demo,vignette,パッケージの help)  使ってみたいパッケージの情報がウェブや書籍で見つからない場合がある  そうでなくとも新しいパッケージは使い方がよくわからないもの  デモ,ビネット(vignette),パッケージの help を見れば多くの情報を得ることができる  ただし,デモとビニエットは必ずあるわけではない demo(package="graphics") # graphics パッケージが持っているデモの一覧 demo("graphics") vignette(package="memisc") # memisc パッケージが持っているビニエットの一覧 vignette("anes48") help(package="Hmisc") # Hmisc パッケージのヘルプ 16
  • 17. 書籍,ウェブサイト編――――――――――――――  書籍 『R によるやさしい統計学』山田 剛史, 杉澤 武俊, 村井 潤一郎 / オーム社 『R 初心者のための ABC』A.ジュール (著), E.イエノウ (著), E.ミースターズ (著), 石田 基 広 (翻訳), 石田 和枝 (翻訳) / シュプリンガー・ジャパン株式会社 『R 言語逆引きハンドブック』石田基広 / シーアンドアール研究所 ※ シュプリンガー・ジャパン撤退にともない,シュプリンガー・ジャパンから出ている訳書は現在品 薄になっています。そのうち事業譲渡先の丸善から発売される予定です。  ウェブサイト R-Tips http://cse.naro.affrc.go.jp/takezawa/r-tips/r2.html JIN’S PAGE http://www1.doshisha.ac.jp/~mjin/R/ 『R 基本統計関数マニュアル』 http://cran.r-project.org/doc/contrib/manuals-jp/Mase-Rstatman.pdf 17