"R is a language and environment for statistical computing and graphics." http://www.r-project.org/

覚え書き

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との併用

  • 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とのデータのやり取り

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形式に変換

  • コマンドによる、PSファイルへの出力

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

行の合併

[,1][,2][,3][,4]
[1,]14710
[2,]25811
[3,]36912

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]
a14710
b5111723

行や列の名前は、dimnamesで設定できる。
dimnames(d) <- list(c('a','b'),c('A','B','C','D'))
以下のようにしても同じ結果。
dimnames(d) <- list(letters[1:2],LETTERS[1:4])

a14710
b5111723

コードの変更と変数の追加

コードの変更(再コーディング)

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人を無作為に選ぶ

 floor(runif(n,min=0,max=1)*N)+1
 もっと簡単な方法は、以下の通り。
sample(N, n, replace=T)

比率の差の検定

278800
242745

prop.test(c(278,242),c(800,745), correct=F, alternative="greater")

クロス表の検定(分割表における独立性の検定)

24129
121815

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 観測度数

クラマー係数

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)))
 }

参考
関数の保存 dump("cr", file="cramer.txt")
関数の読み込み source("cramer.txt")

単純集計結果の一括表示

for ( i in 1:ncol(data01) ) {cat("***");cat(colnames(data01)[i]);cat("***");print(table(data01[,i]));cat("\n")}
data01という名前のデータフレームの例。最後の"\n"は改行。

棒グラフの作成

学科
学年123
1435720
2203
3100

#単純集計(実数)
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)

グラフの作成

#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))

 yearabcdefghij
11989665235110193751945923031687263
21990690239115794053544823331702274
(省略)
182006937185126088177226920631432370
192007938173126288878726920531441376

データ等の保存・読み込み

  • dump() オブジェクトの保存
  • source() 保存してあったものを作業スペースに読み込む
  • sink 結果のファイルへの保存
  • save.image イメージファイル(作業スペース)の保存
  • load
  • read.table

Flow control

  • for (name in vector) {commands}
  • if (condition) {commands when TRUE}
  • if (condition) {commands when TRUE} else {commands when FALSE}

正規分布

qnorm(0.95, mean=0, sd=1) ・・・・ 1.64
pnorm(1,64, mean=0, sd=1) ・・・・ 0.95
qnorm(0.975, 0, 1) ・・・・ 1.96
pnorm(1.96, 0, 1) ・・・・ 0.975
pnorm(1) ・・・・ 0.841
qnorm(0.841) ・・・・ 1


Rの関数等

#
コメントの記入
<-
[]
()
,
$
-
!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
行の結合
recode
変数の再コード化(carパッケージ)
dd <- recode(d,'0:59="不可";60:69="D";70:79="C";80:89="B";90:100="A"')
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
Last-modified: 2009-03-13 (金) 21:34:36 (3563d)