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




第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

ODP
第三回R勉強会
ODP
関東第2回r勉強会
PDF
R language definition3.1_3.2
DOCX
Ⅰ. Rの基礎 2017
PDF
線形識別モデル
PDF
パターン認識第9章 学習ベクトル量子化
PDF
パターン認識 第12章 正則化とパス追跡アルゴリズム
PDF
Haskell勉強会 14.1〜14.3 の説明資料
第三回R勉強会
関東第2回r勉強会
R language definition3.1_3.2
Ⅰ. Rの基礎 2017
線形識別モデル
パターン認識第9章 学習ベクトル量子化
パターン認識 第12章 正則化とパス追跡アルゴリズム
Haskell勉強会 14.1〜14.3 の説明資料

What's hot (15)

PDF
Rで学ぶデータマイニングI 第8章〜第13章
PPTX
TopCoder SRM614 解説
PDF
End challenge Part1
PDF
130604 fpgax kibayos
PDF
距離まとめられませんでした
PDF
R's anti sparseness
PDF
線形計画法入門
PDF
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
PDF
インターン講義8日目「データ構造」
PPTX
Knn発表資料(R)
PPT
確率プロット
PDF
はじめてのパターン認識 第6章 後半
PPT
K010 appstat201201
PDF
Casual learning machine_learning_with_excel_no7
PDF
Rによる分類木 入門
Rで学ぶデータマイニングI 第8章〜第13章
TopCoder SRM614 解説
End challenge Part1
130604 fpgax kibayos
距離まとめられませんでした
R's anti sparseness
線形計画法入門
すごいHaskell読書会 in 大阪 2週目 #5 第5章:高階関数 (2)
インターン講義8日目「データ構造」
Knn発表資料(R)
確率プロット
はじめてのパターン認識 第6章 後半
K010 appstat201201
Casual learning machine_learning_with_excel_no7
Rによる分類木 入門
Ad

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

PPT
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
PDF
第1回R勉強会@東京
PDF
Yamadai.R チュートリアルセッション
PDF
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる 統計解析・データマイニング R言語入門
PDF
Nagoya.R #12 入門者講習
PPTX
統計環境R_データ入出力編2016
PDF
Intoroduction of Pandas with Python
PDF
初心者講習会資料(Osaka.R#5)
PDF
第8回 大規模データを用いたデータフレーム操作実習(2)
PDF
R Language Definition 2.2 to 2.3
PDF
Tokyor23 doradora09
PPTX
Rプログラミング02 データ入出力編
PDF
初心者講習会資料(Osaka.r#6)
PDF
テーマ別勉強会(R言語)#1.pdf
PDF
Rあんなときこんなとき(tokyo r#12)
PDF
初心者講習会資料(Osaka.R#7)
PDF
Listを串刺し
PDF
10分で分かるr言語入門ver2.2 13 0223
PDF
10分で分かるr言語入門ver2.9 14 0920
12-11-30 Kashiwa.R #5 初めてのR Rを始める前に知っておきたい10のこと
第1回R勉強会@東京
Yamadai.R チュートリアルセッション
[データマイニング+WEB勉強会][R勉強会] はじめてでもわかる 統計解析・データマイニング R言語入門
Nagoya.R #12 入門者講習
統計環境R_データ入出力編2016
Intoroduction of Pandas with Python
初心者講習会資料(Osaka.R#5)
第8回 大規模データを用いたデータフレーム操作実習(2)
R Language Definition 2.2 to 2.3
Tokyor23 doradora09
Rプログラミング02 データ入出力編
初心者講習会資料(Osaka.r#6)
テーマ別勉強会(R言語)#1.pdf
Rあんなときこんなとき(tokyo r#12)
初心者講習会資料(Osaka.R#7)
Listを串刺し
10分で分かるr言語入門ver2.2 13 0223
10分で分かるr言語入門ver2.9 14 0920
Ad

More from Paweł Rusin (6)

PDF
Workflow and development in globally distributed mobile teams
ODP
Rust言語紹介
ODP
LOD METI
ODP
R言語で統計分類基本
ODP
関東第3回ゼロはじめるからR言語勉強会ー グラフ
ODP
課題 (第三回)
Workflow and development in globally distributed mobile teams
Rust言語紹介
LOD METI
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 を 共 に 勉 強 し ま し ょ う! 数値型 配列 データフレー ム