Rの基礎3
csvデータの読み込み・書き込み
データをcsvから読み込む
# たとえばinput.csvというファイルをdataという変数に読み込む場合
# header=Fは,先頭行のデータを無視する。FALSEでもOK
data <- read.csv("input.csv", header=F)
クリップボードのデータを変数に保存(読み込み)
# ”コピペ”するときの”コピー”したやつは”クリップボード”に保存されています。
# テキストデータをコピーして,そこから読み込むことができるということ
data <- read.table("clipboard")
データをcsvに保存する
# たとえばdataという変数をoutput.csvに出力する場合
write.csv(data, "output.csv")
xlsxデータの読み込み
パッケージのインストール・読み込み
install.packages("openxlsx")
# パッケージの読み込み
library(openxlsx)
データのダウンロード
Supporting informationの下のDownloadからファイルをダウンロードする
適当なフォルダにファイルを保存し,そのフォルダに作業ディレクトリを設定する
データの読み込み
read.xlsx: エクセルファイルを読み込む
# read.xlsxで読みこんだデータをdataに保存
data <- read.xlsx("pone.0226832.s001.xlsx")
# データフレーム型で読み込まれることを確認
# class()でデータが型を確認可能
# データフレームは,「$」を使用して列を指定できる
class(data)
data$Kusho
data$Age
# 数値で列を指定することも可能
data[,5]
リスト・データフレーム
数値や文字列など,異なるデータ型の要素も含められる行列・配列をリストと呼ぶ
二次元リストの拡張版であり,各列にラベル(名前)をつけられるデータ型をデータフレームと呼ぶ
データフレームのメリットは,data$sexのように,ラベルを用いてデータにアクセスできる点
データフレームにすると by(データフレーム,層別する変数,summary) が使えて便利
代表値の算出
summary(): 最小値,第一四分位,中央値,平均値,第一四分位,最大値を各列ごとに計算してくれる
summary(data)
summary(data$Kusho)
度数をグラフ化する
seq(): 単調増加・減少するデータを作る
seq(A, B, C) : AからBまでCずつ増える
cut(): 指定した数値の範囲でデータを分割する
cut(A, B)
pie(): 円グラフを描画
barplot(): 棒グラフを描画
# 度数分布表の区間を指定する
breaks <- seq(60, 100, 5)
result <- table(cut(data$Age, breaks))
# pie(): 円グラフを描画 【!円グラフはデータの読み取りに難があるので使わないこと!】
# barplot(): 棒グラフで描画
pie(result)
barplot(result)
#ヒストグラム用の関数も用意されている
hist(data$Age)
平均値を棒グラフとしてプロットする
apply(): 複数列に関数を適用する
apply(data, [1 or 2], function)
1は行内データに対して,2は列内データに対して,functionを適用
na.rm=TRUEで,NAを無視
平均値の算出
# データフレームの列ごとに平均値を算出
# 計算できない列があることを確認する
means <- apply(data,2,mean)
# NA(欠損値)を排除してから平均
means <- apply(data,2,mean,na.rm=TRUE)
# meansを転置してからデータフレームに変換
means <- as.data.frame(t(means))
標準偏差(データのバラつきに関する指標)の算出
# NA(欠損値)を排除してから平均
sds <- apply(data,2,sd,na.rm=TRUE)
# meansを転置してからデータフレームに変換
sds <- as.data.frame(t(sds))
プロット用のデータを作成
# 平均値,標準偏差にそれぞれについて,3列をひとつのデータにまとめる
meandata <- cbind(means$Kusho,means$Static,means$Circle)
sddata <- cbind(sds$Kusho,sds$Static,sds$Circle)
# meansの3列に名前をつける
colnames(meandata) <- c("Kusho","Static","Circle")
プロットする
# bar plot and error bar
h <- barplot(meandata, xlab = "Exp Condition", ylab = "Task performance", ylim = c(0, 20),
col = "lightgrey")
arrows(h, meandata - sddata, h, meandata + sddata, code = 3, lwd = 1, angle = 90, length = 0.1)
データを箱ひげ図としてプロットする
# 箱ひげ図をプロットするのはとても簡単
boxplot(data[,1:3],col="lightgrey",ylab="Task performance",xlab="Exp condition")
データを散布図としてプロットする
# Circle条件の課題成績とAge,MMSE,Educationそれぞれとの散布図をプロットする
plot(data$Circle,data$Age,ylab="Age",xlab="Task performance in the Circle condition")
plot(data$Circle,data$MMSE,ylab="MMSE",xlab="Task performance in the Circle condition")
plot(data$Circle,data$Education,ylab="Education",xlab="Task performance in the Circle condition")
画像の保存の仕方「Export」