狠狠撸

狠狠撸Share a Scribd company logo
R 入門
NAKAJIMA Yukihiro
2017 年 10 月 3 日
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 1 / 40
1 はじめに
2 What’s R?
3 実際に動かしてみよう
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 2 / 40
はじめに
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 3 / 40
今日の目標
ある程度 R の仕組みを理解する
R に触れるのが怖くなくなる
前回既に行った R と Rstudio のインストールを前提とする
R スクリプトにコードを書き込んで一緒に動かそう
File -> New File -> R Script (Win:Ctrl+Shift+N,
Mac:command+Shift+N)
コードを書いたら走らせよう
一部を動かす (Win:Ctrl+Enter, Mac:command+Enter)
ファイル内の全てのコードを評価 (Win:Ctrl+alt+R,
Mac:command+alt+R)
後日、前に書いたコード (*.R) を読み込んで利用することもできます
File -> Open File(Win:Ctrl+O, Mac:command+O)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 4 / 40
What’s R?
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 5 / 40
R って何?
統計分析向けのプログラミング言語
オープンソース?フリーソフトウェア
統計分析をする上で必要なことはだいたいできる
データの前処理 (dplyr など)
データの可視化 (ggplot2 など)
データの分析 (色々)
結果の記述、報告 (Rmarkdown など)
このスライドは Rstudio 上で書いてます
世界中で日々パッケージが開発されたり、アップデートされたりし
ている
パッケージを使うと python や Stan などの他のプログラミング言語
も利用できる
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 6 / 40
R の特徴
長所
無料で誰でも使える
Windows でも Mac でも Linux でも使える
コマンドベースで動かすのでコードが使いまわせる
分析の手順が残せる(再現しやすい)
短所
コマンドで動かすのでちょっとハードルを感じやすい
慣れれば楽しくなるよ
日本語がちょっと弱い
データだけでなくてファイル名やフォルダ名も要注意
大文字、小文字やちょっとのスペルミス、かっこ () の閉じ忘れなど
で動かないこともある
エラーはちょっとわかりにくい
Rstudio があるとちょっとは防げる
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 7 / 40
R の動かし方
データ型
実数 (numeric)
整数 (integer)
文字列 (character)
因子 (factor) など
データ型を確認しておかないと後でうまくいかないことも
特に数値が factor になっていると面倒くさい
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 8 / 40
データ構造
ベクトル (vector)
データを特定の順序で並べたもの
同じデータ型
行列 (matrix)
長さが同じベクトルをまとめたもの
2 次元配列
同じデータ型
配列 (array)
データフレームの 3 次元以上
リスト (list)
オブジェクトの集まり
同じデータ型でなくてもよい
データフレーム (data.frame)
Excel のスプレッドシートのイメージ
同じデータ型でなくてもよい
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 9 / 40
データは基本的に任意の変数に格納して利用する
変数に入れる方法は2つ
x1 <- 3
x1
## [1] 3
x2 = 3
x2
## [1] 3
<-の方が R 界隈では一般的?
<-は alt+-で書ける
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 10 / 40
実際に動かしてみよう
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 11 / 40
データを読み込む前に
プロジェクトを作成しよう
分析を管理できる
File -> New Project
これをやっておけば、setwd() とかしないでも大丈夫
プロジェクトや論文、レポートごとに 1 つ作るイメージ
R スクリプトに R にやらせたいことを書き込んでいこう
File -> New File -> R Script (Win:Ctrl+Shift+N,
Mac:command+Shift+N)
他にもショートカットは Alt+Shift+K で表示できる
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 12 / 40
ディレクトリ(フォルダ)の指定
これから使うディレクトを指定する
絶対パスでも相対パスでも OK
プロジェクトを作っていたら不要
# じゃなくて/
setwd("./lab/introduction")
もしくは Session -> Set Working Directory -> Choose Directory
ショートカット (Win: Ctrl+Shift+H)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 13 / 40
計算してみよう
簡単な計算例 1  四則演算
1 + 1
5 - 4
2 * 3
10 / 3
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 14 / 40
結果 1
1 + 1
## [1] 2
5 - 4
## [1] 1
2 * 3
## [1] 6
10 / 3
## [1] 3.333333
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 15 / 40
簡単な計算例 2  計算の順序
1 + 2 * 3 ^ 4
(1 + 2) * 3 ^ 4
(1 + 2 * 3) ^ 4
((1 + 2) * 3) ^ 4
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 16 / 40
結果 2
1 + 2 * 3 ^ 4
## [1] 163
(1 + 2) * 3 ^ 4
## [1] 243
(1 + 2 * 3) ^ 4
## [1] 2401
((1 +2) * 3) ^ 4
## [1] 6561
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 17 / 40
簡単な計算例 3  関数を使った計算
pi * 10
exp(1) * 10 ^ 2
sqrt(2) * 10E04
log(10)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 18 / 40
結果 3
pi * 10
## [1] 31.41593
exp(1) * 10 ^ 2
## [1] 271.8282
sqrt(2) * 10E04
## [1] 141421.4
log(10)
## [1] 2.302585
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 19 / 40
簡単な計算例 4  変数に格納する
x <- 3
y <- 9
x + x
a <- c(1,2,3)
b <- 4:6
a / b
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 20 / 40
結果 4
x ; y ; x + x
## [1] 3
## [1] 9
## [1] 6
a ; b ; a / b
## [1] 1 2 3
## [1] 4 5 6
## [1] 0.25 0.40 0.50
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 21 / 40
簡単な応用例 1
c <- 1:10
d <- mean(c)
e <- c - d
f <- (c- d) ^ 2
g <- sum(f) / (length(c) - 1)
h <- sqrt(g)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 22 / 40
結果
d
## [1] 5.5
g ; var(c)
## [1] 9.166667
## [1] 9.166667
h ; sd(c)
## [1] 3.02765
## [1] 3.02765
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 23 / 40
データの構造を確認
i <- 1:10
j <- i * 2
k <- c(rep("aa",3),rep("bb",4), rep("cc",3))
l <- data.frame(y = i, x = j, fac = k)
head(l,2)
## y x fac
## 1 1 2 aa
## 2 2 4 aa
str(l)
## 'data.frame': 10 obs. of 3 variables:
## $ y : int 1 2 3 4 5 6 7 8 9 10
## $ x : num 2 4 6 8 10 12 14 16 18 20
## $ fac: Factor w/ 3 levels "aa","bb","cc": 1 1 1 2 2 2 2 3
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 24 / 40
データの概要を確認
summary(l)
## y x fac
## Min. : 1.00 Min. : 2.0 aa:3
## 1st Qu.: 3.25 1st Qu.: 6.5 bb:4
## Median : 5.50 Median :11.0 cc:3
## Mean : 5.50 Mean :11.0
## 3rd Qu.: 7.75 3rd Qu.:15.5
## Max. :10.00 Max. :20.0
table(l$fac)
##
## aa bb cc
## 3 4 3
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 25 / 40
相関係数の計算
m <- j ^ 3
l$m <- m
cor(l$y,l$m)
## [1] 0.9283912
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 26 / 40
散布図の作成
plot(l)
y
5 10 15 20 0 2000 4000 6000 8000
246810
5101520
x
fac
1.01.52.02.53.0
2 4 6 8 10
020006000
1.0 1.5 2.0 2.5 3.0
m
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 27 / 40
論理演算子
!TRUE ; TRUE & FALSE ; TRUE | FALSE
## [1] FALSE
## [1] FALSE
## [1] TRUE
TRUE & TRUE | FALSE ; TRUE & (TRUE | FALSE)
## [1] TRUE
## [1] TRUE
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 28 / 40
比較演算子
n <- c(3,4)
n == 3
## [1] TRUE FALSE
n != 3
## [1] FALSE TRUE
n < 4
## [1] TRUE FALSE
n <= 4
## [1] TRUE TRUE
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 29 / 40
CRAN 上のパッケージをインストール
R にもともと備わっている関数だけでは物足りない!
そんな時には世界中の R ユーザーが開発したパッケージを利用する
インストールは初回だけでよい
使うときは毎回 library() を使う
もしくはパッケージ名::関数名 ()
install.packages("tidyverse", dependencies = TRUE)
library(readr)
Tools->Install Packages からもインストールできる
Tools->Check for Package Updates でパッケージをアップデートする
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 30 / 40
github 上のパッケージをインストール
github 上で公開されているパッケージを簡単にインストールできる
パッケージ
install.packages("githubinstall")
library(githubinstall)
install_github_package("packageName")
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 31 / 40
データの読み書き
まず読み込むためのデータを作成
作成したデータを csv で書きだす
ABCDE <- c("A", "B", "C", "D", "E")
Japanese <- c("壱", "弐", "参", "四", "五")
o <- data.frame(Int = 1:300000,
Int2 = seq(from = 0, by = 2.5,
length.out = 300000),
fac = rep(ABCDE, each = 2, times = 30000),
jpn = rep(Japanese, each =2, times = 30000))
write.csv(o, "data.csv", quote=FALSE, row.names=FALSE)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 32 / 40
先ほど作ったデータを読み込む
読み込み方は主に 3 パターン
dat1 <- read.csv("data.csv", header = TRUE,
stringsAsFactors = FALSE)
dat2 <- readr::read_csv("data.csv")
dat3 <- data.table::fread("data.csv", data.table = FALSE)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 33 / 40
文字コード
日本語の呪い
OS をまたがって利用する際には文字化けをしないように工夫が必要
Windows で作られたファイルを読み込む Encoding=cp932
Mac で作られたファイルを読み込む Encoding=UTF8
dat1 <- read.csv("data.csv", header = TRUE,
stringsAsFactors = FALSE,
fileEncoding = "cp932")
dat2 <- readr::read_csv("data.csv",
locale=locale(encoding="cp932"))
dat3 <- data.table::fread("data.csv", data.table = FALSE) %>%
dplyr::mutate(jpn = iconv(jpn, from = "UTF8", to = "CP932"))
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 34 / 40
読み込み方によって速さが違う
system.time(read.csv("data.csv"))
## user system elapsed
## 0.90 0.00 0.89
system.time(readr::read_csv("data.csv"))
## user system elapsed
## 0.19 0.02 0.20
system.time(data.table::fread("data.csv"))
## user system elapsed
## 0.17 0.00 0.20
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 35 / 40
ゑくせるファイルの読み込み
読み込むためのパッケージはたくさんある
その中で Hadley Wickham が作成したパッケージを紹介
excel <- readxl::read_excel("data.xlsx",
sheet = "シート名 or 番号")
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 36 / 40
他のファイル形成
tsv ファイル
tab1 <- read.delim("tab.tsv", stringAsFactors = FALSE)
tab2 <- readr::read_tsv("tab.tsv")
tab3 <- data.table::fread("tab.tsv", data.table = FALSE)
その他
other1 <- read.delim("other.tsv",
stringAsFactors = FALSE, sep = "|")
other2 <- readr::read_delim("other.tsv", "|")
other3 <- data.table::fread("sample.tsv", data.table = FALSE)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 37 / 40
わからないことがあったら
わからないことがあったら、ググりましょう
日本語でもわかりやすい資料がいっぱいあります
それでもわからなければ、答えられる範囲で答えます
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 38 / 40
次回はデータフレームの扱い方、前処理 (data wrangling)
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 39 / 40
Enjoy!
NAKAJIMA Yukihiro R 入門 2017 年 10 月 3 日 40 / 40

More Related Content

Introduction to R