統計ソフトウエアRの基礎
この時間の内容 学習目標 統計ソフトウエアRの基礎を学ぶ。 時間と余力が残っていたら、ちょっとしたプログラミングを学ぶ。 データ構造の基礎:ベクトル 実践的データ構造:データフレーム 時間と余力が残っていたら、ちょっとしたプログラミングを学ぶ。
Rとは? 高度な統計処理が可能 強力なグラフィック機能 フリーウエア コマンドを打ち込むことで実行する(プログラムを書く) プログラム言語としての使用:ある程度複雑なデータ処理ができる
Rにおけるデータ:ベクトル ベクトル:同じ種類(数字、文字など)が一列に並んだもの a <- c( 1, 5, 3, 7 ) #4つの数字の並びをベクトルにしてaに代入。" <- "は代入を示すための矢印。c()はベクトルを作る関数。 a #aを出力 b <- c( 2, 4, 8, 6 ) # bを作る
ベクトルの生成 規則的なベクトルを作るc()以外の方法 > -3:3 > seq( 1, 10, length = 5 ) # 1 から 10 までを等分割した長さ 5 のベクトルを作る “=“はパラメータの指定に用いる。 わからなくなったら、help()で調べる。
ベクトルの生成 help(seq)を見てみる。 “seq( 1, 10, length = 5 )”の最初の2つの数字の前の”from”, “to”が省略されていることがわかる。Rは、数字の位置から”from = ”, “to = ”が省略されていることを判断する。 “length”は”length.out”の省略形。 “by”を使ってベクトルを作ることもできる。 ★ “by”を使ってベクトルを作ってみてください。
ベクトルの計算 a + b c <- a + b # a + bをcに代入 d <- 9 # 長さが1のベクトル “<-” は「右辺を左辺に代入する」という意味。 ★ -, *, / などで試してみてください。 ★ 長さが異なるベクトルの演算はどうなるか?
いろいろなベクトル 論理ベクトル ★ 論理ベクトルの演算(!, |, &) などで試してみてください。 “!”: 否定 要素はTRUEとFALSEのどちらか。 ★ 論理ベクトルの演算(!, |, &) などで試してみてください。 “!”: 否定 “|”: 論理和 = または “&”: 論理積 = かつ
いろいろなベクトル 文字型ベクトル ★ s == x を実行した結果が TRUE FALSE FALSE TRUE となるようなxはなにか? 要素が文字列になっている。 s <- c( "Tokyo", "Kyoto", "Osaka", "Yokohama" ) ★ s == x を実行した結果が TRUE FALSE FALSE TRUE となるようなxはなにか? s == c( "Tokyo", "Yokohama" ) はどのような結果になるか?なぜか? 注:"=="や">"は答えが論理変数(TRUEまたはFALSE)となる演算子
ベクトルの中の要素の取り出し1 s[ 2 ] # ベクトルsの2番目の要素、最初の要素は1番目 s[ 2 ] <- "Kobe" s[ c( 1, 3 ) ] # ベクトルsの1, 3番目の要素 s[ c( -1, -3 ) ] # ベクトルsの1, 3番目以外の要素
ベクトルの中の要素の取り出し2 s[ c( T, T, F, F ) ] # Tの場所に当たるベクトルsの要素 使用する関数: nchar() #引数(文字列)
データフレームとは? データフレーム=同じ長さのベクトルを束ねたオブジェクト 実践的データ解析のとき、データ格納用に多用する。 よくあるデータ解析の流れ Excelなどである程度整理した実験・観察データをcsv形式に保存し直す。 csvファイルをRでデータフレームとして読み込む。 読み込んだデータを使用してRで統計解析をしたり、グラフを描いたりする。
データフレームの作成 (csvファイルの読み込み) 表の形で並んだデータをテキストファイルに収めるための形式 ","(カンマ)で列の区分をする。改行によって行の区分をする。 汎用性が高い(ほとんどのソフトウエアで扱うことができる) Excel csv
データフレームの作成 (csvファイルの読み込み) 以下のExcelファイルを作って、csvファイルを出力してみよう。Excelなどの表計算ソフトをもっていない人は、メモ帳などで直接csvを編集する。
Excelでcsvを保存する方法 ○→「名前をつけて保存」→「その他の形式」 ファイルの種類→「CSV(カンマ区切り)」 "testData.csv"という名前をつけて保存 コンピュータの「ローカルディスクC:」の中に新しいフォルダー「R」を作成して、 "testData.csv"を移動させる。
Rを使ったデータ処理 (データ読み込み、データフレーム作成) setwd( "C:\\R" ) ファイルがある場所としてC:\\Rを指定する x <- read.csv("testData.csv") データをファイルから読み込んで、データフレームxを作る。 <-は右辺を左辺に代入するの意味 読み込むデータのファイル名はtestData.csv x xの中身を画面に出力 head( x ) xの中身の最初の部分を出力
Rを使ったデータ処理 (データフレームの扱い方) colnames( x ) xがもっている列の名を出力 x$diameter データフレームの中の列(ベクトル)を出力 x$diameter + x$height データフレームの中の列を使った演算 y <- x$diameter + x$height y 演算の結果を新しい独立したベクトルに入れる x$newcol <- x$diameter + x$height x 演算の結果をデータフレームの中の新しい列にする
Rを使ったデータ処理 (データフレームの扱い方) データフレームの内の一部のデータだけを取り出す。 z <- x[ x$treatment == "control", ] x$treatment == "control" は論理ベクトルを作る。 論理ベクトルがTRUEである場所に対応した行だけが抜き出されて、新しいデータフレームzに出力される。 z zを表示させて、確認する。
文字列の操作1 複数の文字列を連結して一つの文字列にするには関数 paste() を使う。 間に入れる文字の指定: sep = "-" paste( s[ 1 ], s[ 2 ] ) paste( s[ 1 ], s[ 2 ] , s[ 4 ] ) paste( s[ 1 ], s[ 2 ] , s[ 4 ], sep = "-" )
文字列の操作2 関数 substring() を用いて部分文字列を取り出す。 substring("abcdefg", 3, 5) s1 <- "seq( 3, 5, length = 3 )" eval( parse( text = s1 ) )
少しだけprogramming forによる繰り返し x <- 1 for ( i in 1:2 ) { x <- x + i } x
少しだけprogramming a <- numeric(5) x <- 1:5 for(i in x) { eval(parse(text=paste("a[",i,"] <- 10", sep="") )) print( a ) }