統計処理をするために久しぶりにRを使うことにしたので、忘備録として記録する。
R使用環境
Rstudio - Version 1.0.136
R - 3.3.3
OS - Windows7
本文章の目的
ある多数の計測結果を効率的に処理するために、得られたデータをどのようにして整理するかを検討するためにテストを行った。その際に用いた関数、出やすいエラーをまとめた。
csvファイルを読み込む --part1
read.csv(file, header = TRUE, sep = ",", quote = """,
dec = ".", fill = TRUE, comment.char = "", ...)
read.csv2(file, header = TRUE, sep = ";", quote = """,
dec = ",", fill = TRUE, comment.char = "", ...)
---read.csvとread.csv2の違いは、区切り文字が"."か","の違いである。
使用例
x <- read.csv("C:/Users/○○/Desktop/○○.csv")
データを格納する変数xにcsvファイルの中身を書き込む。
---ただし、Rstudioの自動変換を使うと/の代わりに¥が入ることがあるため、(/)スラッシュに変換しなければならない。
csvファイルを読み込む --part2
以下のコマンドでまずライブラリをインストールしておく。
install.packages("data.table")
---read.csvよりも高速な処理である。
私の使用例では0.55秒が0.33秒となった。
read.csvは読み込み時間のばらつきが大きいようだった。
列名の読み込みは厳しいようで読み込みに失敗した。
使用例
library(data.table)
x <- fread("C:/Users/○○/Desktop/○○.csv")
読み込んだデータの確認
length(x) ←行数を見る
dim(x) ←行列数を見る
summary(x) ←列ごとのデータ分布をみる(左から最小値、第1四分位点、中央値、平均、第3四分位点、最大値)
配列の参照方法
行列の値の参照する方法の一例を示す。
x[,3] ←3列目のデータのみを参照する。
x[3,] ←3行目のデータのみを参照する。
ヒストグラムの作り方
ヒストグラムを作成する関数は
hist(x, breaks = "Sturges",
freq = NULL, probability = !freq,
include.lowest = TRUE, right = TRUE,
density = NULL, angle = 45, col = NULL, border = NULL,
main = paste("Histogram of" , xname),
xlim = range(breaks), ylim = NULL,
xlab = xname, ylab,
axes = TRUE, plot = TRUE, labels = FALSE,
nclass = NULL, warn.unused = TRUE, ...)
である。
先ほどの参照方法は配列を示すため、この関数には適応できない。
ベクトルで値を渡す必要があり$を使う。
fread()で読み込んだ場合、
hist(x$V3)
を使えばよい。
使用例
irisデータを使って実際に出力してみた。
まず、
plot(iris$Sepal.Length)だと以下の結果になる。
hist(iris$Sepal.Length)だと以下の結果になる。
しかし、これだとデータ群が荒いのでhist関数に指示を増やしてみる。
範囲内を幾つで区切りたいという希望があれば、breaks = 50 と指示すれば49刻みにしてくれる。
hist(iris$Sepal.Length,breaks = 50)とすれば、以下の結果になります。
実際、この程度まで区切り間隔を増やすと実際のデータがどのようになってるか傾向が見えてくる。
なので、できるだけ指示を指定してグラフを作成した方がよいだろう。
累積分布関数の作り方
累積分布関数を作るには
ecdf()
を使うことで累積分布関数(cdf)を描く
使用例
z <-ecdf(y)
plot(z)
これだけでグラフを描画できる。というわけでirisを使って描写する。
z <- ecdf(iris$Sepal.Length)
plot(z)
非常に簡単です。
データの取り扱いの一例
1. 演算を行う。
基本のベクトル演算については、
- (加算)、- (減算)、* (積)、/ (商)、%/% (整数商)、%% (剰余)、^ (べき乗)
でよい。
行列の演算については - (加算)、- (減算)、%% (要素毎の積)、 (内積)、/ (要素毎の商)
などがある。
2. 和を求める
sum() ←定番の関数ですね。
オプションでna.rm = TRUEをつけるとベクトル内にNANがあっても無視してくれる。
使用例
sum(y^3,na.rm = TRUE)/sum(y^2,na.rm = TRUE) ←yは行列ではなくベクトルです。
便利な関数
apply()←用法は気が向いたら記載
参考文献
・read.csv()
https://stat.ethz.ch/R-manual/R-devel/library/utils/html/read.table.html
・fread()
http://oku.edu.mie-u.ac.jp/%7Eokumura/stat/datatable.html
・前処理
http://wafdata.hatenablog.com/entry/2015/05/06/214501
・summary()
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/39.html
・hist()
https://stat.ethz.ch/R-manual/R-devel/library/graphics/html/hist.html
http://bio-info.biz/tips/r_histogram.html
・演算
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/14.html
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/20.html
・apply()
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/24.html
・累積分布関数
http://cse.naro.affrc.go.jp/takezawa/r-tips/r/63.html