Rでのデータの読み込み

Rを立ち上げ、コンソール画面に

data(iris)

と入力してください。 特に変化はありませんが、これで”iris”データが読み込まれました。

データirisについて

基本パッケージである「datasets」に含まれている。

library(datasets)
data(package = "datasets")

とすれば、datasetsパッケージに含まれるデータ一覧が表示される。

データの概要を捉える

以下のように入力すると、データの概要がわかります。

dim(iris) #irisデータセットの行数と列数を表示する
## [1] 150   5
str(iris) #irisデータの構造を表示する。
## 'data.frame':    150 obs. of  5 variables:
##  $ Sepal.Length: num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
##  $ Sepal.Width : num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
##  $ Petal.Length: num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
##  $ Petal.Width : num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
##  $ Species     : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
summary(iris) #irisデータの列毎の集計値を表示する
##   Sepal.Length    Sepal.Width     Petal.Length    Petal.Width   
##  Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
##  1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
##  Median :5.800   Median :3.000   Median :4.350   Median :1.300  
##  Mean   :5.843   Mean   :3.057   Mean   :3.758   Mean   :1.199  
##  3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
##  Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
##        Species  
##  setosa    :50  
##  versicolor:50  
##  virginica :50  
##                 
##                 
## 
head(iris) #データの最初6行を表示する
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

中央値/平均値を求める

Rの命令の基本構造は、 関数(データ, 諸条件) となっている。 以下のように命令すると、irisデータの1〜4列目(Sepal Length, Sepal Width, Petal Length, Petal Width)のそれぞれの平均値、中央値が出力される。

#平均値
mean(iris[,1])
## [1] 5.843333
mean(iris[,2])
## [1] 3.057333
mean(iris[,3])
## [1] 3.758
mean(iris[,4])
## [1] 1.199333
#中央値
median(iris[,1])
## [1] 5.8
median(iris[,2])
## [1] 3
median(iris[,3])
## [1] 4.35
median(iris[,4])
## [1] 1.3

iris[, 1]で1列目のデータのみ指定できる。 iris\(Sepal.Lengthとしても同じデータを指定できる。(ex. mean(iris\)Sepal.Length)) iris[1, ]であれば1行目のデータのみ指定。 一般化すると、data[行, 列]という構造になっている。

max(iris[,1]) #最大値 
## [1] 7.9
min(iris[,1]) #最小値
## [1] 4.3
quantile(iris$Sepal.Length, 0.25)  #第1四分位数
## 25% 
## 5.1
quantile(iris$Sepal.Length, 0.75)  #第3四分位数
## 75% 
## 6.4
# Sepal.Lengthの四分位範囲を計算する
q <- quantile(iris$Sepal.Length, c(0.25, 0.75), na.rm = TRUE) 
q[2] - q[1]
## 75% 
## 1.3
var(iris$Sepal.Length, na.rm = TRUE)  #分散
## [1] 0.6856935
sd(iris$Sepal.Length, na.rm = TRUE)  #標準偏差
## [1] 0.8280661

na.rm = TRUEオプションは、NA値を含む行を無視するように指示。

ヒストグラムを描く

hist(iris[,1])

hist(iris[,1], breaks = "Sturges", main = "Sepal Length", xlab = "Length (cm)")

箱ひげ図を描く

boxplot(iris[,1])

boxplot(iris[,1], main = "Sepal Length Boxplot", ylab = "Length (cm)")

boxplot(Petal.Length ~ Species, data = iris,         main = "Petal Length by Species", xlab = "Species", ylab = "Petal Length")

散布図を描く

plot(iris$Sepal.Length, iris$Sepal.Width, main = "Sepal Length vs. Sepal Width", xlab = "Length (cm)", ylab = "Width (cm)")

ggplot2ライブラリーというグラフ描画に優れたライブラリーを利用して描画することも可能。 ggplot()が描画するデータを指定し、そこに”+”で描画のための情報を追加していく。 aes: “ aesthetics”の略称。x軸にはSepal.Length、y軸にはSepal.Widthを使用。 geom_point: 散布図であることを指定。 Labs: ラベルの情報指定。

install.packages("ggplot2",dep=T,repos = 'http://cran.us.r-project.org')
## 
## The downloaded binary packages are in
##  /var/folders/nm/m79f0x2d79768ww18g9h71340000gp/T//RtmpWfoIZz/downloaded_packages
library(ggplot2)
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width)) +geom_point() + labs(title = "Sepal Length vs. Sepal Width",
x = "Length(cm)", y = "Width(cm)")

種類で色分けしたいときは以下。

ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
  geom_point() +
  labs(title = "Scatterplot of Sepal Length and Width",
       x = "Sepal Length", y = "Sepal Width",
       color = "Species")

グラフの説明を日本語にしたい

Windowsの場合は、文字化けしないが、Macは文字化けする。

#標準グラフ描画の場合
par(family = "HiraKakuProN-W3")

とグラフを描く命令コードの前に実行する。

theme_set( theme_bw(base_family = "HiraKakuProN-W3")) 

とグラフを描く命令コードの前に実行する。

par(family = "HiraKakuProN-W3")
plot(iris$Sepal.Length, iris$Sepal.Width, main = "ガクの長さと幅", xlab = "Length (cm)", ylab = "Width (cm)")

theme_set( theme_bw(base_family = "HiraKakuProN-W3"))
ggplot(data = iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +geom_point() +labs(title = "ガクの長さと幅",x = "Sepal Length", y = "Sepal Width",color = "Species")

csvファイルを読み込む

あらかじめ

getwd()
## [1] "/Users/aonoa1"

として、出力された場所(Rのワーキングディレクトリ)に,ファイルiris.csvを置く。

data<-read.csv("iris.csv", header=T, row.names=1)

もしくは、ファイルパスを”“内に入れる。

クリップボード上のデータをRに読み込む(windows)

  1. irisデータ全体を選択してコピー

  2. コピーした状態のまま

  3. Rの画面に,

#data<-read.table("clipboard", header=T, row.names=1)

と打ち込む。(#は各自で外す。) あるいは、手順1以前にRコンソールにコピペして、実行しない状態にしておく。

  1. エンターキーを押してコードを実行する。

head(data)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

として、データが読み込めたか確認する。 -head(iris)とした状態と同じ状態になればOK

クリップボード上のデータをRに読み込む(Mac)

  1. irisデータ全体を選択してコピー

  2. コピーした状態のまま

  3. Rの画面に,

#data<-read.table(pipe("pbpaste"),header=T, row.names=1)

と打ち込む。(#は各自で外す。)

あるいは、手順1以前にRコンソールにコピペして、実行しない状態にしておく。

  1. エンターキーを押してコードを実行する。

head(data)
##   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1          5.1         3.5          1.4         0.2  setosa
## 2          4.9         3.0          1.4         0.2  setosa
## 3          4.7         3.2          1.3         0.2  setosa
## 4          4.6         3.1          1.5         0.2  setosa
## 5          5.0         3.6          1.4         0.2  setosa
## 6          5.4         3.9          1.7         0.4  setosa

として、データが読み込めたか確認する。 -head(iris)とした状態と同じ状態になればOK