"R is a language and environment for statistical computing and graphics."
 [[http://www.r-project.org/>http://www.r-project.org/]]
 
 #contents
 
 *覚え書き [#s4e6e9ae]
 Rについての主な参考書~
 -舟尾・高浪『データ解析環境「R」』(工学社、平成17年)
 -U.リゲス(石田訳)『Rの基礎とプログラミング技法』(シュプリンガー・ジャパン、平成18年)
 -岡田監訳『Rによる医療統計学』(丸善、平成19年)
 -Braun and Murdock, '''A First Course in Statistical Programming with R''', Cambridge, 2007.
 -P.スペクター(石田基広・石田和枝訳)『Rデータ自由自在』(シュプリンガー・ジャパン、平成20年)
 
 
 
 **SPSSとの併用 [#wf00ba01]
 -Rで作成したデータをSPSSで使うことができる。~
 write.table(Object, file="filename.txt", sep="\t", row.names=F)~
 -SPSSのデータファイルをRで読み込むこともできる(パッケージ「foreign」が必要)。~
 read.spss("filename.sav", to.data.frame = TRUE) 
 
  同じデータで、RとSPSSの結果を比べることができる。
 状況によってRとSPSSを使い分けることができる。
 
 **Excelとのデータのやり取り [#r7c8dc2b]
 :read.csv|CSV形式のデータを読み込む。read.csv("filename.csv")
 :read.delim("clipboard", header=F)|Excelからのデータの貼り付け。ウィンドウズのクリップボード経由。「header=T」でもよい。
 :read.table("filename.csv", header=T, sep=",")|CSV形式。read.csv("filename.csv")と同じ結果。
 :read.table("filename.txt", header=T, sep="\t")|タブ区切りのデータの読み込み。
 
 :write.table(object, file="filename.txt", sep="\t", row.names=F)|タブ区切り。sepを省略するとスペース区切り。Excelで読み込むことが可能。
 :write.table(object, file="filename.csv", sep=",", row.names=F)|Excelで読み込みやすいCSV形式。
 :write.csv(object,"filename.csv")|
 
 
 **LaTeXで図を表示するためにEPS形式に変換 [#e42317ac]
 -コマンドによる、PSファイルへの出力
 #setlinebreak(on)
 
 x<- 1:10
 plot(x)
 dev.copy(postscript, "1.ps",width=6.65, height=6.65, horizontal=F)
 dev.off()
 
 上記のようにすると、EPSファイルのバウンディングボックスの設定が下記のようになる。
  %%BoundingBox: 58 182 537 660
 
 **行の合併 [#z79ae384]
 ||[,1]|[,2]|[,3]|[,4]|
 |[1,]|RIGHT:1|RIGHT:4|RIGHT:7|RIGHT:10|
 |[2,]|RIGHT:2|RIGHT:5|RIGHT:8|RIGHT:11|
 |[3,]|RIGHT:3|RIGHT:6|RIGHT:9|RIGHT:12|
 
 a<-matrix(1:12,3)    3は行数の指定(nrow=3)
 b<-a[2,]+a[,3]      2行と3行の加算
 rbind(a,b) >- c      4行目の付加
 c[c(1,4),] >- d       2,3行目の削除
 rownames(d)[1] <- "a"    1行目の行ラベルの指定。(データエディタで変更してもよい。fix(d))
 
 
 ||[,1]|[,2]|[,3]|[,4]|
 |a|RIGHT:1|RIGHT:4|RIGHT:7|RIGHT:10|
 |b|RIGHT:5|RIGHT:11|RIGHT:17|RIGHT:23|
 
 行や列の名前は、dimnamesで設定できる。
 dimnames(d) <- list(c('a','b'),c('A','B','C','D'))
 以下のようにしても同じ結果。
 dimnames(d) <- list(letters[1:2],LETTERS[1:4])
 
 
 ||A|B|C|D|
 |a|RIGHT:1|RIGHT:4|RIGHT:7|RIGHT:10|
 |b|RIGHT:5|RIGHT:11|RIGHT:17|RIGHT:23|
 
 
 
 
 **コードの変更と変数の追加 [#ya90ca6a]
 コードの変更(再コーディング)
 
 var1  <- c(1, 2, 3, 4, 5, 1, 3, 5, 5)
 fvar1 <- factor(var1, levels=1:5)
 levels(fvar1) <- factor(c(1, 1, 1, 2, 3)[fvar1]
 
 1→1
 2→1
 3→1
 4→2
 5→3
 
 変数の追加(コード変更した変数のデータフレームへの)
 data02 <- transform(data01, V1b=fvar1)
 
 別の方法
 carパッケージのrecode関数の利用
 var1b <- recode(var1, "c(1,2,3)=1; 4=2; 5=3")  ・・・ 「5=3」は、「else=3」でもよい。
 
 **N人の中からn人を無作為に選ぶ [#p2bd05c4]
  floor(runif(n,min=0,max=1)*N)+1
 
 
 **比率の差の検定 [#r23c7df2]
 |278|800|
 |242|745|
 
 prop.test(c(278,242),c(800,745), correct=F, alternative="greater")
 
 **クロス表の検定(分割表における独立性の検定) [#ne66eb99]
 |24|12|RIGHT:9|
 |12|18|15|
 
 a <- matrix(c(24,12,9,12,18,15), ncol=3, byrow=T) 
 
 chisq.test(a) 検定の結果が表示される。
 chisq.test(a)$statistic とすればカイ2乗の値だけを取り出すことができる。
 chisq.test(a)$p.value とすれば、p値が取り出される。
 chisq.test(a)$expected 期待度数
 chisq.test(a)$observed 観測度数
 
 
 **クラマー係数 [#d8aca8f7]
 cr <- function(x) {
  if (dim(x)[1] > dim(x)[2] ) return(sqrt(chisq.test(x)$statistic/sum(x)/(dim(x)[2]-1)))
  else return(sqrt(chisq.test(x)$statistic/sum(x)/(dim(x)[1]-1)))
  }
 
 
 **単純集計結果の一括表示 [#e54517fb]
 
 > for ( i in 1:44 )  {cat("***");cat(colnames(fu06)[i]);cat("***");print(table(fu06[,i]));cat("\n")}
 
 **棒グラフの作成 [#fe2125dd]
 ||>|>|学科|
 |学年|1|2|3|
 |   1|RIGHT: 43|RIGHT: 57|RIGHT: 20|
 |   2|RIGHT:  2|RIGHT:  0|RIGHT:  3|
 |   3|RIGHT:  1|RIGHT:  0|RIGHT:  0|
 
 
 
 #単純集計(実数)
 barplot(margin.table(t1a,2),col=topo.colors(3),xlab="学科",names=c("社会","社会福祉","その他"))
 
 #単純集計(パーセント)
 barplot(100*margin.table(t1a,2)/sum(margin.table(t1a,2)),col=topo.colors(3),xlab="学科",names=c("社会","社会福祉","その他"),ylim=c(0,50))
 
 #クロス集計
 barplot(100*prop.table(t1a,2),xlab="学科",col=topo.colors(3),legend.text=rownames(t1a),xlim=c(0,5))
 
 #クロス集計(beside=T)
 barplot(100*prop.table(t1a,2),xlab="学科",col=topo.colors(3),legend.text=rownames(t1a),beside=T)
 
 #クロス集計(積み重ね)
 barplot(100*prop.table(t1a,2),col=topo.colors(3),xlab="学科",names=c("社会","社会福祉","その他"),legend.text=rownames(t1a),xlim=c(0,4))
 
 #クロス集計(beside=T)
 barplot(100*prop.table(t1a,2),col=topo.colors(3),xlab="学科",names=c("社会","社会福祉","その他"),legend.text=rownames(t1a),beside=T)
 
 
 
 
 **グラフの作成 [#r8fddf14]
 
 #shokugyoubetsu.RData
 
 barplot(shokugyou$a,names=rownames(shokugyou),ylim=c(0,1000),col=topo.colors(5))
 barplot(shokugyou$b,names=rownames(shokugyou),ylim=c(0,300),col=topo.colors(5))
 barplot(shokugyou$c,names=rownames(shokugyou),ylim=c(0,1500),col=topo.colors(5))
 barplot(shokugyou$j,names=rownames(shokugyou),ylim=c(0,500),col=topo.colors(5))
 
 
 x <- shokugyou[c(2,7,12,17),-1]
 x2 <- t(x)
 barplot(x2[,4],ylim=c(0,1600),col=topo.colors(5))
 barplot(100*x2[,4]/sum(x2[,4]),ylim=c(0,30),col=topo.colors(5))
 x3 <- 100*prop.table(x2,2)
 barplot(x3,col=topo.colors(5),legend.text=rownames(x3),xlim=c(0,6))
 
 
 y07 <- shokugyou[19,-1]
 ty07 <- t(y07)
 barplot(ty07[,1],ylim=c(0,1600),col=topo.colors(5))
 barplot(100*ty07[,1]/sum(ty07[,1]),ylim=c(0,25),col=topo.colors(5))
 
 
 || year|   a|   b|    c|   d|   e|   f|   g| h|    i|   j|
 |1|  1989| 665| 235| 1101| 937| 519| 459| 230| 3| 1687| 263|
 |2|  1990| 690| 239| 1157| 940| 535| 448| 233| 3| 1702| 274|
 ||(省略)|||||||||||
 |18| 2006| 937| 185| 1260| 881| 772| 269| 206| 3| 1432| 370|
 |19| 2007| 938| 173| 1262| 888| 787| 269| 205| 3| 1441| 376|
 
 
 **データ等の保存・読み込み [#mb150f0a]
 -dump() オブジェクトの保存
 -source()
 -sink 結果のファイルへの保存
 -save.image イメージファイル(作業スペース)の保存
 -load
 -read.table
 
 
 **Flow control [#ob02bbd9]
 -for (name in vector) {commands}
 -if (condition) {commands when TRUE]
 -if (condition) {commands when TRUE] else {commands when FALSE}
 
 
 
 ----
 
 *Rの関数等 [#y9916706]
 :#|コメントの記入
 :<-|
 :[]|
 :()|
 :,|
 :$|
 :-|
 :!is.na|
 :abline|
 :addmargins()|周辺度数の追加。  addmargins(tt, c(1,2))   1は列の計、2は行の計。addmargins(A)は、次と同じ。addmargins(A, margin = 1:length(dim(A)), FUN = sum) 
 
 :append|
 :attach|データフレーム内の変数名だけで変数を参照することを可能にする。
 :barplot|棒グラフの作成
 :byrow|マトリックスに数値が入る順番が変わる。byrow=T
 :c|Combine Values into a Vector or List
 :cat|コンソールへの出力
 :cbind|列の結合
 :chisq.test()|カイ2乗検定。  カイ2乗の値を取り出すには次のようにする(m1は任意の行列)。chisq.test(m1)$statistic
  これを利用すれば次の式でクラマー係数(属性相関係数)を計算できる。cr <- sqrt(chisq.test(m1)$statistic/sum(m1)/(t-1)) ただし、「t」は行列m1の行数・列数の少ない方。
 
 
 :col=|色の指定。col="red",col=topo.colors(3)
 :col.names|read.tableの引数。col.names=c("A","B","C")
 :colnames|関数
 :cor|
 :curve|
 :Control + c|
 :data|組み込みデータセットをメモリーに読み込む。
 :data.frame|d<-data.frame() 空のデータフレームの作成
 data.frame(A=a,B=b,C=c) ベクトルデータを1つのデータフレームに変換する。
 :detach|attachの反対
 :dim|行列の次元属性の設定・変更
 :dimnames|行や列の名前は、dimnamesで設定できる。
 dimnames(d) = list(c('a','b'),c('A','B','C','D'))
 
 :dir()|作業ディレクトリ内のファイルを表示する。外部ファイルを読み込む前にファイル名を確認することができる。
 :dnorm|
 :edit|
 :example|関数の使い方が例で表示される。example(mean)
 :factor|f <- factor(e,levels=1:5) 数値をファクタ(順序尺度のようなデータ)に変換する。ファクタでは、levelが想定されているので、名目尺度(順序のないカテゴリ)とはいえない。
 :fisher.test|
 :fix|データフレームの編集。fix(d)
 :getwd()|作業ディレクトリ(フォルダ)の確認
 :head|head(a,n=10)
 :help|
 :hist|
 :history()|それまでに実行されたコマンドの一覧表示。別のウィンドウに表示される。
 :is.na|
 :levels|levels(f) <- factor(c(1,1,1,2,3)[f]
 :length|
 :library|
 :list|
 :lines|
 :lm|
 :load|
 :ls()|
 :margin.table|周辺度数
 :matrix|
 :mean|
 :na.rm|
 :objects()|ls()と同じ結果。
 :order|
 :plot|
 :print|コンソールへの出力
 :prop.table|prop.table(mat,2)←行列matの列パーセント(比率)。頭に「100*」を付けるとパーセントになる。
 :prop.test|比率の差の検定
 :q()|終了。q("no")とすると作業スペースを保存せず終了する。
 :qnorm|
 :range|
 :read.csv|CSV形式のデータを読み込む。read.csv("filename.csv")
 :read.delim("clipboard", header=F)|Excelからのデータの貼り付け。ウィンドウズのクリップボード経由。「header=T」でもよい。
 :read.spss("filename.sav", to.data.frame = TRUE)|
 :read.table("filename.csv", header=T, sep=",")|CSV形式。read.csv("filename.csv")と同じ結果。
 :read.table("filename.txt", header=T, sep="\t")|タブ区切りのデータの読み込み。
 :rbind|行の結合
 :rm|オブジェクトの消去。rm(list=ls())とするとすべてのオブジェクトが消去される。
 :rowmames()|関数
 :row.names=F|write.tableの引数。通常は付けること。write.table(object, file="filename.csv", sep=",", row.names=F)
 :runif|
 :R Enter|
 :RSiteSearch|R-helpメーリングリストの検索。 RSiteSearch("barplot")
 :sample|
 :save.image|Save R Objects
 :scan|ベクトルあるいは行列としてデータを保存。
 x <- scan(what="") ・・・ 文字列を値とするベクトル      
 x <- matrix(scan(), ncol=3, byrow=TRUE) ・・・ 数値を値とする行列
 x <- scan() ・・・ 数値を値とするベクトル
 :sd|
 :seq|
 :split|
 :sqrt|
 :subset|
 :sum|
 :summary|
 :t|
 :table|度数分布表、クロス統計表。table(Q1),table(Q1,F1)←Q1 by F1
 :tail|最後から数えて6番目のデータから最後のデータまで表示される。
 :tapply|
 :t.test|
 :table|
 :text|
 :transform|データフレームへの列の追加。transform(x,y=a) 
 :write.table(object, file="filename.txt", sep="\t", row.names=F)|タブ区切り。sepを省略するとスペース区切り。Excelで読み込むことが可能。
 :write.table(object, file="filename.csv", sep=",", row.names=F)|Excelで読み込みやすいCSV形式。
 :write.csv(object,"filename.csv")|

トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS