Rをつかってみる(実演)

計算機として使う

四則演算

1 + 1
[1] 2
(1 + 2) * 4 - 6 / 3
[1] 10

数学関数を使う

サイン (sin)

sin(pi / 6)
[1] 0.5

常用対数 (log10)

log10(1000)
[1] 3

ヘルプ

help関数

help(log10)

“?”でもよい

?log10

引数の与え方

log関数でbase引数に10をあたえても同じ

log(1000, base = 10)
[1] 3

これでも同じ(引数名を省略すると順序どおりに割り当てられる)

log(1000, 10)
[1] 3

これでも同じ(引数名は区別できるところまで書けばOK)

log(b = 10, x = 1000)
[1] 3

base引数を省略すると(デフォルトでは)自然対数になる

log(10)
[1] 2.302585
log(exp(2))
[1] 2

統計関数を使う

ベクトルを変数に代入

x <- c(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

連続した整数のときはこのように書ける

x <- 0:10

print関数で変数の値を表示

print(x)
 [1]  0  1  2  3  4  5  6  7  8  9 10

変数名だけでも値が表示される

x
 [1]  0  1  2  3  4  5  6  7  8  9 10

平均 (mean)

mean(x)
[1] 5

分散(不偏分散)(var)

var(x)
[1] 11

要約 (summary)

summary(x)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
    0.0     2.5     5.0     5.0     7.5    10.0 

ベクトルの要素

3番目の要素をとりだす(Rではインデックスは1から)

x[3]
[1] 2

3番目以外の要素をとりだす

x[-3]
 [1]  0  1  3  4  5  6  7  8  9 10

3〜5番目の要素をとりだす

x[3:5]
[1] 2 3 4

パッケージの利用

例: zipanguパッケージ 日本の暦・住所・文字等の小技パッケージ

パッケージのインストール

install.packages("zipangu")

RStudioなら、Tools メニューから Install Packages… でも

ライブラリの読み込み

library(zipangu)

元号→西暦変換

文字列は"または'で囲む

convert_jyear("天保三年")
[1] 1832

住所を区切る

separate_address("石川県野々市市扇が丘7-1")
$prefecture
[1] "石川県"

$city
[1] "野々市市"

$street
[1] "扇が丘7-1"

政令指定都市の場合

separate_address("京都府京都市中京区寺町通御池上る上本能寺前町488番地")
$prefecture
[1] "京都府"

$city
[1] "京都市中京区"

$street
[1] "寺町通御池上る上本能寺前町488番地"

郡部の場合

separate_address("北海道余市郡余市町黒川町7丁目6")
$prefecture
[1] "北海道"

$city
[1] "余市郡余市町"

$street
[1] "黒川町7丁目6"

addrに結果を代入

addr <- separate_address("北海道余市郡余市町黒川町7丁目6")

代入した結果

addr
$prefecture
[1] "北海道"

$city
[1] "余市郡余市町"

$street
[1] "黒川町7丁目6"

str関数でオブジェクトの内容を表示する

str(addr)
List of 3
 $ prefecture: chr "北海道"
 $ city      : chr "余市郡余市町"
 $ street    : chr "黒川町7丁目6"

リストの名前を表示する

names(addr)
[1] "prefecture" "city"       "street"    

リストの要素にアクセスする

addr$prefecture
[1] "北海道"

addr$prefectureaddr[["prefecture"]] を簡単にした書き方

addr[["prefecture"]]
[1] "北海道"

データフレーム

Rでデータを扱うための基本的な型

  • 行が1つの観測データ(レコード)

  • 列が変数(フィールド)

アヤメのデータ(iris)

data(iris)

最初の方の行を見てみる(デフォルトでは6行)

head(iris)
  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

Sepal.Length列を取り出す

iris$Sepal.Length
  [1] 5.1 4.9 4.7 4.6 5.0 5.4 4.6 5.0 4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1
 [19] 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.0 5.0 5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.0
 [37] 5.5 4.9 4.4 5.1 5.0 4.5 4.4 5.0 5.1 4.8 5.1 4.6 5.3 5.0 7.0 6.4 6.9 5.5
 [55] 6.5 5.7 6.3 4.9 6.6 5.2 5.0 5.9 6.0 6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1
 [73] 6.3 6.1 6.4 6.6 6.8 6.7 6.0 5.7 5.5 5.5 5.8 6.0 5.4 6.0 6.7 6.3 5.6 5.5
 [91] 5.5 6.1 5.8 5.0 5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3
[109] 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.0 6.9 5.6 7.7 6.3 6.7 7.2
[127] 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.0 6.9 6.7 6.9 5.8 6.8
[145] 6.7 6.7 6.3 6.5 6.2 5.9

20行目を取り出す

iris[20, ]
   Sepal.Length Sepal.Width Petal.Length Petal.Width Species
20          5.1         3.8          1.5         0.3  setosa

Sepal.Length列とSpecies列、31-35行目を取り出す

iris[31:35, c("Sepal.Length", "Species")]
   Sepal.Length Species
31          4.8  setosa
32          5.4  setosa
33          5.2  setosa
34          5.5  setosa
35          4.9  setosa

各列(変数)の要約を求める

summary(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