Rについて
をベースに学んでいく。
1. Rとデータマイニングの基礎
1.1 オブジェクト
Rはオブジェクト言語である。Rのオブジェクトは
関数オブジェクト |
:データ処理・解析のプログラムセット |
データオブジェクト |
:データセット |
の2つがある。
複数の関数オブジェクトがリンクしているオブジェクトグループをクラスという。
関数オブジェクトを略して関数と呼ぶことにする。基本的に関数は
関数(引数)
という形で()の中の文字列を引数という。引数にはデータあるいはデータ解析のための条件などが入る。
1.2 自作関数
Rで自作関数を作る際は関数を用いて関数オブジェクトを作成する。
関数の名前 <- (引数){
プログラム本体
}
1.3 繰り返し文
Rで繰り返し処理を行うにはがある。
(変数 変数の開始値:変数の終了値){
繰り返し処理される部分
}
ただしでは繰り返し処理は遅い。実際、以下のスクリプトを実行したところ、相当な違いが出た。
n <- 100000000 x <- runif(n) y <- runif(n) z <- vector(length = n) (t1 <- system.time(z <- x + y)) (t2 <- system.time(for(i in 1:n){z[i] <- x[i] + y[i]}))
文は()と付いているように関数である。コロン:もまた関数である。
# 以下は等価 1:100 ":"(1,100)
高速化するには、単にループを避けるだけでは難しい場合が多い。主にベクトル化により高速化する*1。
ベクトルフィルタリングはベクトル化の一種である。
# 以下の関数のスピードをfor文と比較する oddcount <- function(x)return(sum(x%%2==1)) # x <- sample(1:1000000000,10000000,replace = T) system.time(oddcount) system.time( { c <- 0 for(i in 1:length(x)){ if(x[i]==1){c <- c + 1} } } )
他にはや、などが使える。他にも,が該当する。
2. データの入出力と編集
2.1 ベクトル
1行または1列のデータセットをベクトルという。
# ベクトル:以下はすべて等価 sales <- c(15,20,25,10,30) sales = c(15,20,25,10,30) assign("sales", c(15,20,25,10,30)) c(15,20,25,10,30) -> sales
2.2 データフレーム
長さが同じであるような複数の行(あるいは列)のデータを並べたものを行列という。行列にはという2つのオブジェクト形式が頻用される。
mt_one <- matrix(1,3,4) # 行数、列数がそれぞれ3,4ですべての要素が1であるような行列 mt_one[1,3] <- 2 #第1行3列を2にする
2.3 配列
複数のデータ表を1つにまとめたものを配列という。関数を用いて生成できる。
2.4 リスト
ベクトル、行列、配列およびリストなどの異なる方のデータを1つのオブジェクトとして扱うことが可能なオブジェクトである。関数を用いて作成する。
2.6 データファイルの読込
外部のテキストファイルをに読み込む関数にはなどがある。
# Excelからコピーしたセルのデータを読み込む read.delim("clipboard") # 小・中規模のデータを読み込む read.table("...ファイルパス...",header = T, row.names = 1, sep = ",") # ヘッダーありで第1列をヘッダーとする。データ区切りは,(カンマ)とする # csv形式を読み込む read.csv("...ファイルパス...") # 大規模のデータを読み込む scan("...ファイルパス...")
2.7 データの出力
write(data, "...ファイルパス...") write.table(data, "...ファイルパス...") write.csv(data, "...ファイルパス...") # sinkによる出力 sink("...ファイルパス...") # 出力開始:ファイルパスに出力する data1; data2 # 出力対象の指定 sink() # sink関数の終わり # 出力終了
2.8 データの結合
行列にデータ(行または列)を追加するには、関数を用いる。追加対象はベクトルまたは行列である。
rbind(df1,1:10) cbind(df2,1:10)
2.9 データの並び替え
ベクトル、行列の要素を並び替える関数としてがある。は並び変わった引数を返り値とする。
他方で行列をある行・列を基準にして並び替えるにはを用いる。
2.10 よく使われる関数
データ型とデータセットの操作 | |
配列型 | |
データをベクトルまたはリストとして結合する。 | |
文字型 | |
オブジェクトの型を返す。 | |
複素数型 | |
データフレーム型 | |
整数型 | |
引数が指定したデータ型かを判別する。 | |
リスト型 | |
論理型 | |
行列型 | |
空データ型 | |
実数型 | |
データを転置する。 | |
個々のデータの出現頻度を返す。分割表を作成する。 | |
ベクトル型。 | |
サイズ | |
行列、配列のサイズを返す。 | |
データオブジェクトの長さを返す。 | |
列数を返す。 | |
行数を返す。 | |
名前 | |
列に名前を付ける。 | |
データ項目に名前を付ける。 | |
行に名前を付ける。 | |
並べ替え | |
ランクを返す。 | |
逆の順に並び替える。 | |
昇順に並び替える。 | |
昇順に並び替えたときの元のデータの位置を返す。 | |
結合と編集 | |
列方向にデータを追加。 | |
表計算風のデータエディタを起動する。 | |
エディタを起動する。 | |
データオブジェクトを編集する。 | |
オブジェクトを編集する。 | |
行方向にデータを追加。 | |
その他 | |
でオブジェクトを削除する。 | |
でオブジェクトのリストを返す。 |
補足 スペック情報
エディション | Windows 10 Home |
バージョン | 20H2 |
プロセッサ | Intel(R) Core(TM) i5-1035G4 CPU @ 1.10GHz 1.50 GHz |
実装 RAM | 8.00 GB |
システムの種類 | 64 ビット オペレーティング システム、x64 ベース プロセッサ |
R バージョン | 3.6.3 (2020-02-29) |
RStudio バージョン | 1.2.5033 |
*1:以降は、Matloff, Norman(2012)「アート・オブ・Rプログラミング」(オライリー・ジャパン)PP.302-参照。