2013年11月1日金曜日

[自分用] Rの基本

久しくRを触ってなかったんですが論文執筆のために触ることになり、何からすれば良いのかも戸惑う始末。なのでダメな自分用にメモっておきます。随時追加するかも。
ちなみに私のRの使用目的はグラフを作るのがメインです。あくまで自分用なので、「基本」と書きつつも私がよく使うものだけを列記します。

Rstudio立ち上げましょう

まずはここから。

CSV読み込みましょう

d <- read.csv("path to file", header = T or F) ワークディレクトリはデフォルトではホームフォルダに設定されてる。変更したければRstudioの環境設定から変える。<注意:csvファイルのカンマ区切りはスペースを含まないようにする。スペースも文字としてカウントされてしまうため。>
以下、データはこんなのを想定してます。

Species Season Value
A Spring 12
A Summer 36
B Spring 41
B Summer 19

特定の行または列だけ選びたければ

d[1,] (行)
d[,1] (列)

行とか列を削除したいときは

d[,-c(2,3,4)] #(2,3,4列目を削除)

オブジェクトの削除

a, b, cという3つのオブジェクトを一度に消す rm(a,b,c) 

条件からデータを抽出

例えば季節(Season)がSpringのデータだけ抽出したい、とか。 d.spring <- subset(d, Season=="Spring")

データの取り出し方いろいろ

説明しにくいので、読んで分かれ自分。
#ベクトル作成
> v<-c(2,3,4,5,6)

#普通に表示
> v
[1] 2 3 4 5 6

#2で割って余りが0になる=TRUE
> v%%2==0
[1] TRUE FALSE TRUE FALSE TRUE

#TRUEになるデータだけピックアップ
> v[v%%2 ==0]
[1] 2 4 6

#TRUEのデータが何番目かを表示
> which(v%%2==0)
[1] 1 3 5

#1,3,5番目のデータをピックアップ、二つ上のコードと結果は同じだけど。
> v[which(v%%2==0)]
[1] 2 4 6

とりあえずplotしてみる

plot(x,y,…) という書き方なので以下だとX軸にdのSeason、Y軸にdのValueが表示されます。 plot(d$Season, d$Value, main="title of figure") ちなみに、タイトルが長すぎて改行を入れたい場合は、 main="title of figure\nsubtitle" のように改行したいところに\nを入れれば、"title of figure" と "subtitle"の間に改行が入る。
※Macの場合。Windowsでは¥nを入れる。

x軸の項目名が1,2,3...とかなってるけど任意の名前にしたいとき

plot(data, xaxt="n") とxaxtパラメータでx軸の名前を入れないようにして一旦描画。次に、 axis(side=1, at=c(1:n), labels=LabelName) としてx軸に上書き。sideパラメータは1:下,2:左,3:上,4:右。atはx軸の項目数。その数と同じだけのLabelNameを先に作っておいて、x軸の項目名を置き換えるわけです。このLabelNameは文字列(character)でもベクターでもOKなようです。ここで、項目名が長いために90度回転させたいならlasというパラメータを入れる。こちらの有り難いページによれば以下とのこと。
可能な値は 0 (標準・軸に平行), 1 (x軸,y軸とも水平), 2 (x軸,y軸とも軸に垂直),3 (x軸,y軸とも垂直(半時計回りで90度回転)) の4つ
axis(side=1, at=c(1:n), labels=LabelName, las=3)

ヒストグラムも描いてみようかな

hist(d$Value)

ggplot2てパッケージがあったよな、たしか

インストール(初回だけで良い) install.packages("ggplot2") 読み込み library("ggplot2")

ggplot2でもプロットしてみる

qplot(data=hoge.rule1, Season, Value, main="title of figure") 分類(Species)に基づいて色分けしたいときは
qplot(data=hoge.rule1, Season, Value, main="title of figure", color = Species)

ggplot2は + で表現を追加できる

facet_wrapで複数のプロットを一度に描ける。以下の例では種ごとにプロットを作成。scalesで軸の範囲を設定可能
+ facet_wrap( ~ Species, scales = "free_y")   レイヤーの発想で点を重ねることも可能。以下の例ではsizeが3の点の上に、sizeが1.5の薄いグレーの点を重ねることで赤い境界線だけに見えるプロットになる。
+ geom_point(size=3, color="red") + geom_point(size=1.5, color="grey90")

ggplot関数に+していくとqplotより複雑なことができる(らしい)

ggplotで基本的なデータ要素、X、Yを決めてあげて、それに+してどんなプロットの形にするか等を追加していくことが可能みたい。 p <- ggplot(d, aes ( Season, Value ) )
p + geom_boxplot ( aes ( fill = Species )

ggplot2のqplotで参照するページ

ggplot2のqplot関数のまとめ - ぬいぐるみライフ(仮)
qplot. ggplot2 0.9.3.1

結果をテキストファイルに書き出し

sink(“results.txt”) と書くと、これ以降の出力をresults.txtに書き出してくれる。止めるときは、 sink()

他に参考にするページ

Google の R の書き方案内

0 件のコメント:

コメントを投稿