SlideShare a Scribd company logo
1 of 21
パヴェウ・ルシ
           ン
      株式会社ブリリアントサー
     ビス




第2回R勉強会



Rのデータ型について
自己紹介


   Paweł Rusin (パヴェウ・ルシン)
   pawel.rusin@brilliantservice.co.jp
    Facebook: Paweł Rusin                  
    (iofar@o2.pl)
   会社:
 株式会社ブリリアントサービス
   業務:
    データマイニング
R言語のデータ型

   数値型
   文字列
   ブーリアン型
   ベクター
   列挙型
   リスト
   配列
   データフレーム
   (関数)
数値型

> 42
[1] 42
> -273.15
[1] -273.15
> 2.3e4
[1] 23000
                           複素数:
> Inf
                           > 1+1i
[1] Inf
                           [1] 1+1i
> Inf*100000000000000000
                           sqrt(-4+0i)
[1] Inf
                           [1] 0+2i
ブーリアン型
> A=TRUE
> B=FALSE
> A==B
[1] FALSE
> A=T #A=TRUE
> B=F #B=FALSE     予約語:
> T = FALSE #できる   > FALSE = TRUE
> F = TRUE #できる    以下にエラー FALSE = TRUE :
>T                 代入の左辺が不正(do_set)です
[1] FALSE
>F
[1] TRUE
文字列
> string = "This is typical string"
[1] "This is typical string"

文字列の変化:
          コマンド                                    結果
       toupper(string)         [1] "THIS IS TYPICAL STRING"
     gsub("i","o",string)      [1] "Thos os typocal strong"
      strsplit(string,"i")     [[1]]
                               [1] "Th" "s " "s ntyp" "cal nstr" "ng"
     substr(string,4,12)       [1] "s is typi"
        nchar(string)                             [1] 22

> cat("This nis nformatted nstring")
This
Is
Formatted

string
1
ベクター:                             2         3       4   5         ...       x

ベクターという:
●   順番に並べている値のセット
●   ベクターには同じような値は要らなければいけない:
            1      2          3       4         5           ...         x
    数値:
             7    123        32       -32       0


            1      2              3             4           ...         x
    文字列:
           “This” “is”       “character” “vec”


             1           2        3             4           ...         x
ブーリアン値:
           TRUE FALSE TRUE FALSE
ベクターの作り
方:
 vector(mode = "", length = )   c(..., recursive=FALSE)
 > vector("integer", 3)         > c(1,2,3,4,5)
 [1] 0 0 0                      [1] 1 2 3 4 5
 > integer(3)                   > c(1:5)            # ==1:5
 [1] 0 0 0                      [1] 1 2 3 4 5
 > character(3)                 > c(5:1)            # ==5:1
 [1] "" "" ""                   [1] 5 4 3 2 1
 > logical(3)                   > c(1:5-1)          # ==1:5-1
 [1] FALSE FALSE FALSE          [1] 0 1 2 3 4
 seq(...)
                                rep(x...)
 > seq(1,12, by=3)
                                > rep(1:3,each=2)
 [1] 1 4 7 10
                                [1] 1 1 2 2 3 3
 > seq(12,1, by=-3)
 [1] 12 9 6 3
ベクターの要素をとり方:
> x=-5:-1
>x
[1] -5 -4 -3 -2 -1
> x[3]
[1] -3
> x[2:4]
[1] -4 -3 -2
> x[-2]
[1] -5 -3 -2 -1
> x[c(TRUE,FALSE,FALSE,TRUE,FALSE)]
[1] -5 -2
> x[c(x>-3)]
[1] -2 -1
ベクターの名札

    1
   first
     1                2
                   second     3
                            third   ...        x

      7             123      32

> y = c(first=1,second=2,third=3)         > names(y) = c(„raz”,”dwa”,”trzy”)
>y                                        >y
first second third                        raz dwa trzy
   1           2    3                       1      2   3
> y["second"]                             > names(y)
second                                    [1] raz dwa trzy
   2
> y[c("first","third")]
first third
  1        3
リスト
リストとベターの中に違う?
●
    リストでいろいろなデータ型を一緒に使える:
●   数値
●   文字列
●   ボーリアン値
●   ベクター
●   ほかのリストや配列やデータフレームなど
          1
          age     2
                 name       3
                          married       4
                                    languages    ...   x

          27    “Pawel”   FALSE      “Polish”    ?

                                    “English”


                                    “Japanese”


●
    リストのデータに名礼を付いて”$”で別の要素が使
リスト
> myList = list(27,"Pawel",FALSE,c("Polish","English","Japanese"))
> myList
。。。
> names(myList) =c("age","name","married","languages")
> myList
。。。
> myList =
list(age=27,name="Pawel",married=FALSE,languages=c("Polish","English","Japan
ese"))
> myList
。。。
> myList[2]
$name
[1] "Pawel"
> myList[2]= ”changed”
> myList$name
リスト
> myList[4]
$languages
[1] "Polish" "English" "Japanese"
> myList[4] = "x"
> myList[4]

$languages
[1] "x"
> myList[4] = c(”Polish”,”English”,”Japanese”)
警告メッセージ:
In myList[4] = c("Polish", "English", "Japanese") :
  置き換えるべき項目数が,置き換える数の倍数ではありませんでした
> myList[[4]] = c(”Polish”,”English”,”Japanese”)
> myList[4]

$languages
[1] "Polish" "English" "Japanese"
> myList[[4]][1]
列挙型
factor(x = character(), levels, labels = levels, 
exclude = NA, ordered = is.ordered(x))

> colours = factor(c("白","黒","青","青","白"))
[1] 白 黒 青 青 白
Levels: 黒 青 白
> colours = factor(c("白","黒","青","青","白"), ordered=TRUE)
[1] 白 黒 青 青 白
Levels: 黒 < 青 < 白
> summary(colours)
黒青白
1 2 2
行列と配列

行列: 2次元のベクター
配列: 2次元以上のベクター                                   ,3
                                               ,2
                                          ,1
                                                      ,1, ,2, ,3,
           ,1 ,2 ,3
                                           1,
      1,
                                           2,
      2,
                                           3,
      3,


       数値                  文字列                        ブーリアン値
      ,1    ,2   ,3        ,1   ,2   ,3                     ,1      ,2   ,3
 1,   111 114 117     1,   い    に    と                 1,   TRUE TRUE TRUE

 2,   112 115 118     2,   ろ    ほ    ち                 2,   TRUE TRUE TRUE

 3,   113 116 119     3,   は    へ    り                 3,   TRUE TRUE TRUE
行列と配列
matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE,
      dimnames = NULL)
array(data = NA, dim = length(data), dimnames = NULL)


 > myMatrix =
 matrix(111:119,3,3)        > myMatrix[-4]
 > myMatrix                 [1] 111 112 113 115 116 117
     [,1] [,2] [,3]         118 119
 [1,] 111 114 117           > myMatrix[] = 0
 [2,] 112 115 118           > myMatrix
 [3,] 113 116 119               [,1] [,2] [,3]
 > myMatrix[7]              [1,] 0 0 0
 [1] 117                    [2,] 0 0 0
 > myMatrix[,2]
                            [3,] 0 0 0
 [1] 114 115 116
 > myMatrix[2]              > myMatrix = 0
 [1] 112                    > myMatrix
 > myMatrix[2,]             [1] 0
 [1] 112 115 118
配列と行列
> myMatrix = matrix(111:119,3,3)              apply(myMatrix,1,mean)
> colnames(myMatrix) =                        [1] 57.0 104.5 58.0
c(„first”,”second”,”third”)                   apply(myMatrix,2,sum)
> myMatrix = myMatrix/2                       [1] 268.0 272.5 118.0
> myMatrix[2,] = myMatrix[2,]+100             x=1:3
> myMatrix[8] = myMatrix[8]*0                 myMatrix = cbind(myMatrix,x)
> myMatrix                                    MyMatrix
   first second third                               first second third x
[1,] 55.5 57.0 58.5                           [1,] 55.5 57.0 58.5 1
[2,] 156.0 157.5 0.0                          [2,] 156.0 157.5 0.0 2
[3,] 56.5 58.0 59.5                           [3,] 56.5 58.0 59.5 3

                        データを接する:
                        ●   cbind(x=,y=)
                        ●   rbind(x=,y=)
                        ●   merge(x=,y=,by=,all=)
配データフレーム
データフレームと配列の中に違う?
●   リストとベクターと同じくらい:
●   データフレームでいろいろなデータ型を一緒に使える

             age   name      married   ...
        1    27    “Pawel”   FALSE     ...
        2    12    “Tom”     FALSE     ...
        3    77    “Jerry”   TRUE      ...



    ●   データフレムーのデータに”$”でアクセスがで
        きる
データフレームインポート
data.frame(..., row.names = NULL, check.rows = FALSE,
       check.names = TRUE,
       stringsAsFactors = default.stringsAsFactors())

> MyDataFrame = data.frame(myMatrix)

read.table(file, header = FALSE, sep = "", quote = ""'", dec = ".", row.names, col.names,
       as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0,
       check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE,
       comment.char = "#", allowEscapes = FALSE, flush = FALSE, stringsAsFactors =
       default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text)




  データフレームを取り込                                        データフレームを保存す
  む:                                                 る:
  ●   read.table(file)                               ●   write.table(object,file)
  ●   read.csv(file)                                 ●   write.csv(object,file)
  ●   read.delim(file)                               ●   write.delim(object,file)
データフレーム


データフレームをエディ
ト:
●   edit(dataFrame)
●   fix(dataFrame)
●   data.entry(dataFrame)
データフレームをプレ
ヴュー:
●   head(dataFrame)
●   tail(dataFrame)
●   Colnames(dataFrame)
●   Rownames(dataFrame)
●   summary(dataFrame)
●   table(dataFrame)
ベク
ブーリアン型                        リス
                   ター
                              ト
  ご 清 聴 あ りが と うご ざ い ま し た
                              列挙
文字列                           型

       R を 共 に 勉 強 し ま し ょ う!

                        数値型        配列


データフレー
ム

More Related Content

What's hot

Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Etsuji Nakai
 
コードを書けば複素数がわかる
コードを書けば複素数がわかるコードを書けば複素数がわかる
コードを書けば複素数がわかるTaketo Sano
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Prunus 1350
 
TopCoder SRM614 解説
TopCoder SRM614 解説TopCoder SRM614 解説
TopCoder SRM614 解説EmKjp
 
End challenge Part1
End challenge Part1End challenge Part1
End challenge Part1hisa2
 
130604 fpgax kibayos
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayosMikio Yoshida
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
 
距離まとめられませんでした
距離まとめられませんでした距離まとめられませんでした
距離まとめられませんでしたHaruka Ozaki
 
R's anti sparseness
R's anti sparsenessR's anti sparseness
R's anti sparsenessybenjo
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作るTaketo Sano
 
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)Yoichi Nakayama
 
インターン講義8日目「データ構造」
インターン講義8日目「データ構造」インターン講義8日目「データ構造」
インターン講義8日目「データ構造」Hatena::Engineering
 
Knn発表資料(R)
Knn発表資料(R)Knn発表資料(R)
Knn発表資料(R)Sora Kubota
 
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半Prunus 1350
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201t2tarumi
 
Casual learning machine_learning_with_excel_no7
Casual learning machine_learning_with_excel_no7Casual learning machine_learning_with_excel_no7
Casual learning machine_learning_with_excel_no7KazuhiroSato8
 
Rによる分類木 入門
Rによる分類木 入門Rによる分類木 入門
Rによる分類木 入門Hiro47
 

What's hot (19)

Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料Haskell勉強会 14.1〜14.3 の説明資料
Haskell勉強会 14.1〜14.3 の説明資料
 
コードを書けば複素数がわかる
コードを書けば複素数がわかるコードを書けば複素数がわかる
コードを書けば複素数がわかる
 
Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章Rで学ぶデータマイニングI 第8章〜第13章
Rで学ぶデータマイニングI 第8章〜第13章
 
TopCoder SRM614 解説
TopCoder SRM614 解説TopCoder SRM614 解説
TopCoder SRM614 解説
 
End challenge Part1
End challenge Part1End challenge Part1
End challenge Part1
 
130604 fpgax kibayos
130604 fpgax kibayos130604 fpgax kibayos
130604 fpgax kibayos
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作る
 
距離まとめられませんでした
距離まとめられませんでした距離まとめられませんでした
距離まとめられませんでした
 
R's anti sparseness
R's anti sparsenessR's anti sparseness
R's anti sparseness
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
何もないところから数を作る
何もないところから数を作る何もないところから数を作る
何もないところから数を作る
 
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
 
インターン講義8日目「データ構造」
インターン講義8日目「データ構造」インターン講義8日目「データ構造」
インターン講義8日目「データ構造」
 
Knn発表資料(R)
Knn発表資料(R)Knn発表資料(R)
Knn発表資料(R)
 
確率プロット
確率プロット確率プロット
確率プロット
 
はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半はじめてのパターン認識 第6章 後半
はじめてのパターン認識 第6章 後半
 
K010 appstat201201
K010 appstat201201K010 appstat201201
K010 appstat201201
 
Casual learning machine_learning_with_excel_no7
Casual learning machine_learning_with_excel_no7Casual learning machine_learning_with_excel_no7
Casual learning machine_learning_with_excel_no7
 
Rによる分類木 入門
Rによる分類木 入門Rによる分類木 入門
Rによる分類木 入門
 

Similar to 第2回R勉強会1

12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと Haruka Ozaki
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)Masahiro Hayashi
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~Nobuhisa Koizumi
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門Takashi Kitano
 
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイルPython勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル理 小林
 
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪yashigani
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Tetsuya Yoshida
 
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン  53回 ─── Array と HashRuby初級者向けレッスン  53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hashhigaki
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編itoyan110
 
Rデモ03_データ分析編2016
Rデモ03_データ分析編2016Rデモ03_データ分析編2016
Rデモ03_データ分析編2016wada, kazumi
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 Nobuaki Oshiro
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2Masao Kato
 
R言語勉強会#2.pdf
R言語勉強会#2.pdfR言語勉強会#2.pdf
R言語勉強会#2.pdfTakuya Kubo
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101Nobuaki Oshiro
 
Chapter 6: Computing on the language (R Language Definition)
Chapter 6: Computing on the language (R Language Definition)Chapter 6: Computing on the language (R Language Definition)
Chapter 6: Computing on the language (R Language Definition)Nagi Teramo
 
R Language Definition 2.2 to 2.3
R Language Definition 2.2 to 2.3R Language Definition 2.2 to 2.3
R Language Definition 2.2 to 2.3Kohta Ishikawa
 
Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理wada, kazumi
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JPSercan Ahi
 

Similar to 第2回R勉強会1 (20)

12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと 12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
 
初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)初心者講習会資料(Osaka.R#5)
初心者講習会資料(Osaka.R#5)
 
Pythonintro
PythonintroPythonintro
Pythonintro
 
F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~F#入門 ~関数プログラミングとは何か~
F#入門 ~関数プログラミングとは何か~
 
20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門20170923 excelユーザーのためのr入門
20170923 excelユーザーのためのr入門
 
Python勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイルPython勉強会3-コレクションとファイル
Python勉強会3-コレクションとファイル
 
すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪すごいHaskell読書会#1 in 大阪
すごいHaskell読書会#1 in 大阪
 
Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会Java数値(浮動小数点)課題勉強会
Java数値(浮動小数点)課題勉強会
 
Ruby初級者向けレッスン 53回 ─── Array と Hash
Ruby初級者向けレッスン  53回 ─── Array と HashRuby初級者向けレッスン  53回 ─── Array と Hash
Ruby初級者向けレッスン 53回 ─── Array と Hash
 
Rで実験計画法 前編
Rで実験計画法 前編Rで実験計画法 前編
Rで実験計画法 前編
 
Rデモ03_データ分析編2016
Rデモ03_データ分析編2016Rデモ03_データ分析編2016
Rデモ03_データ分析編2016
 
10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920 10分で分かるr言語入門ver2.9 14 0920
10分で分かるr言語入門ver2.9 14 0920
 
Clojure programming-chapter-2
Clojure programming-chapter-2Clojure programming-chapter-2
Clojure programming-chapter-2
 
R言語勉強会#2.pdf
R言語勉強会#2.pdfR言語勉強会#2.pdf
R言語勉強会#2.pdf
 
20140920 tokyo r43
20140920 tokyo r4320140920 tokyo r43
20140920 tokyo r43
 
10分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 110110分で分かるr言語入門ver2.10 14 1101
10分で分かるr言語入門ver2.10 14 1101
 
Chapter 6: Computing on the language (R Language Definition)
Chapter 6: Computing on the language (R Language Definition)Chapter 6: Computing on the language (R Language Definition)
Chapter 6: Computing on the language (R Language Definition)
 
R Language Definition 2.2 to 2.3
R Language Definition 2.2 to 2.3R Language Definition 2.2 to 2.3
R Language Definition 2.2 to 2.3
 
Rによる繰り返しの並列処理
Rによる繰り返しの並列処理Rによる繰り返しの並列処理
Rによる繰り返しの並列処理
 
Feature Selection with R / in JP
Feature Selection with R / in JPFeature Selection with R / in JP
Feature Selection with R / in JP
 

More from Paweł Rusin

Workflow and development in globally distributed mobile teams
Workflow and development in globally distributed mobile teamsWorkflow and development in globally distributed mobile teams
Workflow and development in globally distributed mobile teamsPaweł Rusin
 
R言語で統計分類基本
R言語で統計分類基本R言語で統計分類基本
R言語で統計分類基本Paweł Rusin
 
関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフPaweł Rusin
 
課題 (第三回)
課題 (第三回)課題 (第三回)
課題 (第三回)Paweł Rusin
 

More from Paweł Rusin (6)

Workflow and development in globally distributed mobile teams
Workflow and development in globally distributed mobile teamsWorkflow and development in globally distributed mobile teams
Workflow and development in globally distributed mobile teams
 
Rust言語紹介
Rust言語紹介Rust言語紹介
Rust言語紹介
 
LOD METI
LOD METILOD METI
LOD METI
 
R言語で統計分類基本
R言語で統計分類基本R言語で統計分類基本
R言語で統計分類基本
 
関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ関東第3回ゼロはじめるからR言語勉強会ー グラフ
関東第3回ゼロはじめるからR言語勉強会ー グラフ
 
課題 (第三回)
課題 (第三回)課題 (第三回)
課題 (第三回)
 

第2回R勉強会1

  • 1. パヴェウ・ルシ ン  株式会社ブリリアントサー ビス 第2回R勉強会 Rのデータ型について
  • 2. 自己紹介  Paweł Rusin (パヴェウ・ルシン)  pawel.rusin@brilliantservice.co.jp Facebook: Paweł Rusin                   (iofar@o2.pl)  会社:  株式会社ブリリアントサービス  業務: データマイニング
  • 3. R言語のデータ型  数値型  文字列  ブーリアン型  ベクター  列挙型  リスト  配列  データフレーム  (関数)
  • 4. 数値型 > 42 [1] 42 > -273.15 [1] -273.15 > 2.3e4 [1] 23000 複素数: > Inf > 1+1i [1] Inf [1] 1+1i > Inf*100000000000000000 sqrt(-4+0i) [1] Inf [1] 0+2i
  • 5. ブーリアン型 > A=TRUE > B=FALSE > A==B [1] FALSE > A=T #A=TRUE > B=F #B=FALSE 予約語: > T = FALSE #できる > FALSE = TRUE > F = TRUE #できる 以下にエラー FALSE = TRUE : >T 代入の左辺が不正(do_set)です [1] FALSE >F [1] TRUE
  • 6. 文字列 > string = "This is typical string" [1] "This is typical string" 文字列の変化: コマンド 結果 toupper(string) [1] "THIS IS TYPICAL STRING" gsub("i","o",string) [1] "Thos os typocal strong" strsplit(string,"i") [[1]] [1] "Th" "s " "s ntyp" "cal nstr" "ng" substr(string,4,12) [1] "s is typi" nchar(string) [1] 22 > cat("This nis nformatted nstring") This Is Formatted string
  • 7. 1 ベクター: 2 3 4 5 ... x ベクターという: ● 順番に並べている値のセット ● ベクターには同じような値は要らなければいけない: 1 2 3 4 5 ... x 数値: 7 123 32 -32 0 1 2 3 4 ... x 文字列: “This” “is” “character” “vec” 1 2 3 4 ... x ブーリアン値: TRUE FALSE TRUE FALSE
  • 8. ベクターの作り 方: vector(mode = "", length = ) c(..., recursive=FALSE) > vector("integer", 3) > c(1,2,3,4,5) [1] 0 0 0 [1] 1 2 3 4 5 > integer(3) > c(1:5) # ==1:5 [1] 0 0 0 [1] 1 2 3 4 5 > character(3) > c(5:1) # ==5:1 [1] "" "" "" [1] 5 4 3 2 1 > logical(3) > c(1:5-1) # ==1:5-1 [1] FALSE FALSE FALSE [1] 0 1 2 3 4 seq(...) rep(x...) > seq(1,12, by=3) > rep(1:3,each=2) [1] 1 4 7 10 [1] 1 1 2 2 3 3 > seq(12,1, by=-3) [1] 12 9 6 3
  • 9. ベクターの要素をとり方: > x=-5:-1 >x [1] -5 -4 -3 -2 -1 > x[3] [1] -3 > x[2:4] [1] -4 -3 -2 > x[-2] [1] -5 -3 -2 -1 > x[c(TRUE,FALSE,FALSE,TRUE,FALSE)] [1] -5 -2 > x[c(x>-3)] [1] -2 -1
  • 10. ベクターの名札 1 first 1 2 second 3 third ... x 7 123 32 > y = c(first=1,second=2,third=3) > names(y) = c(„raz”,”dwa”,”trzy”) >y >y first second third raz dwa trzy 1 2 3 1 2 3 > y["second"] > names(y) second [1] raz dwa trzy 2 > y[c("first","third")] first third 1 3
  • 11. リスト リストとベターの中に違う? ● リストでいろいろなデータ型を一緒に使える: ● 数値 ● 文字列 ● ボーリアン値 ● ベクター ● ほかのリストや配列やデータフレームなど 1 age 2 name 3 married 4 languages ... x 27 “Pawel” FALSE “Polish” ? “English” “Japanese” ● リストのデータに名礼を付いて”$”で別の要素が使
  • 12. リスト > myList = list(27,"Pawel",FALSE,c("Polish","English","Japanese")) > myList 。。。 > names(myList) =c("age","name","married","languages") > myList 。。。 > myList = list(age=27,name="Pawel",married=FALSE,languages=c("Polish","English","Japan ese")) > myList 。。。 > myList[2] $name [1] "Pawel" > myList[2]= ”changed” > myList$name
  • 13. リスト > myList[4] $languages [1] "Polish" "English" "Japanese" > myList[4] = "x" > myList[4] $languages [1] "x" > myList[4] = c(”Polish”,”English”,”Japanese”) 警告メッセージ: In myList[4] = c("Polish", "English", "Japanese") : 置き換えるべき項目数が,置き換える数の倍数ではありませんでした > myList[[4]] = c(”Polish”,”English”,”Japanese”) > myList[4] $languages [1] "Polish" "English" "Japanese" > myList[[4]][1]
  • 14. 列挙型 factor(x = character(), levels, labels = levels,  exclude = NA, ordered = is.ordered(x)) > colours = factor(c("白","黒","青","青","白")) [1] 白 黒 青 青 白 Levels: 黒 青 白 > colours = factor(c("白","黒","青","青","白"), ordered=TRUE) [1] 白 黒 青 青 白 Levels: 黒 < 青 < 白 > summary(colours) 黒青白 1 2 2
  • 15. 行列と配列 行列: 2次元のベクター 配列: 2次元以上のベクター  ,3 ,2 ,1 ,1, ,2, ,3, ,1 ,2 ,3 1, 1, 2, 2, 3, 3, 数値 文字列 ブーリアン値 ,1 ,2 ,3 ,1 ,2 ,3 ,1 ,2 ,3 1, 111 114 117 1, い に と 1, TRUE TRUE TRUE 2, 112 115 118 2, ろ ほ ち 2, TRUE TRUE TRUE 3, 113 116 119 3, は へ り 3, TRUE TRUE TRUE
  • 16. 行列と配列 matrix(data = NA, nrow = 1, ncol = 1, byrow = FALSE, dimnames = NULL) array(data = NA, dim = length(data), dimnames = NULL) > myMatrix = matrix(111:119,3,3) > myMatrix[-4] > myMatrix [1] 111 112 113 115 116 117 [,1] [,2] [,3] 118 119 [1,] 111 114 117 > myMatrix[] = 0 [2,] 112 115 118 > myMatrix [3,] 113 116 119 [,1] [,2] [,3] > myMatrix[7] [1,] 0 0 0 [1] 117 [2,] 0 0 0 > myMatrix[,2] [3,] 0 0 0 [1] 114 115 116 > myMatrix[2] > myMatrix = 0 [1] 112 > myMatrix > myMatrix[2,] [1] 0 [1] 112 115 118
  • 17. 配列と行列 > myMatrix = matrix(111:119,3,3) apply(myMatrix,1,mean) > colnames(myMatrix) = [1] 57.0 104.5 58.0 c(„first”,”second”,”third”) apply(myMatrix,2,sum) > myMatrix = myMatrix/2 [1] 268.0 272.5 118.0 > myMatrix[2,] = myMatrix[2,]+100 x=1:3 > myMatrix[8] = myMatrix[8]*0 myMatrix = cbind(myMatrix,x) > myMatrix MyMatrix first second third first second third x [1,] 55.5 57.0 58.5 [1,] 55.5 57.0 58.5 1 [2,] 156.0 157.5 0.0 [2,] 156.0 157.5 0.0 2 [3,] 56.5 58.0 59.5 [3,] 56.5 58.0 59.5 3 データを接する: ● cbind(x=,y=) ● rbind(x=,y=) ● merge(x=,y=,by=,all=)
  • 18. 配データフレーム データフレームと配列の中に違う? ● リストとベクターと同じくらい: ● データフレームでいろいろなデータ型を一緒に使える age name married ... 1 27 “Pawel” FALSE ... 2 12 “Tom” FALSE ... 3 77 “Jerry” TRUE ... ● データフレムーのデータに”$”でアクセスがで きる
  • 19. データフレームインポート data.frame(..., row.names = NULL, check.rows = FALSE, check.names = TRUE, stringsAsFactors = default.stringsAsFactors()) > MyDataFrame = data.frame(myMatrix) read.table(file, header = FALSE, sep = "", quote = ""'", dec = ".", row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#", allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text) データフレームを取り込 データフレームを保存す む: る: ● read.table(file) ● write.table(object,file) ● read.csv(file) ● write.csv(object,file) ● read.delim(file) ● write.delim(object,file)
  • 20. データフレーム データフレームをエディ ト: ● edit(dataFrame) ● fix(dataFrame) ● data.entry(dataFrame) データフレームをプレ ヴュー: ● head(dataFrame) ● tail(dataFrame) ● Colnames(dataFrame) ● Rownames(dataFrame) ● summary(dataFrame) ● table(dataFrame)
  • 21. ベク ブーリアン型 リス ター ト ご 清 聴 あ りが と うご ざ い ま し た 列挙 文字列 型 R を 共 に 勉 強 し ま し ょ う! 数値型 配列 データフレー ム