37
初初初初初初初初 1 初初初初初初初初初初初初 TOKYO.R #28

Tokyo r28 1

Embed Size (px)

DESCRIPTION

TokyoR 28回 修正版

Citation preview

Page 1: Tokyo r28 1

初心者セッション 1

データフレームを使ってみる

TOKYO.R #28

Page 2: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 3: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 4: Tokyo r28 1

• 名前 : 簑田 高志• Twitter ID :aad34210• ブログ :http://

pracmper.blogspot.com/• 出身地 : 熊本県• 仕事 : インターネット広告(リスティン

グ広告)のビジネスアナリスト

• R 歴 :華麗に初心者に転身中

自己紹介

Page 5: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 6: Tokyo r28 1

前回のおさらい

http://www.slideshare.net/akiaki5516/10rver21

1. 主催者里さんの初めてのお休みした会2. 懇親会用のお酒が小型化&

種類が増えた

3. R ってなに?4. R のインストール5. データ解析の流れ

• 変数への代入/計算の仕方• 配列• データへのアクセスの仕方• 関数の使い方• データ( CSV )インポート

6. 自作関数7. パッケージをつかったレポーティング

Page 7: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 8: Tokyo r28 1

データフレームとは…

これ(表)のこと

Page 9: Tokyo r28 1

データフレームとは…

行・列を持ったデータ構造

Page 10: Tokyo r28 1

そう、イメージは

で OK !

Page 11: Tokyo r28 1

「ワシ」の本にはこう書いてある

• Excel ユーザには データフレームはワークシート、またおそらくワークシート

内の領域のようなものです。…

• SQL プログラマには データフレームはテーブルです。列の方を宣言する必要はあり

ません。 R が判断してくれます。

• SAS ユーザには データフレームはすべてのデータがメモリ内の存在する SAS

データ・セットのようなものです。…

• 統計学者には データフレームは観測値の表です。…

引用: R クックブック P.34

Page 12: Tokyo r28 1

そう、イメージは

で OK !

Page 13: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 14: Tokyo r28 1

データフレームの作成方法データフレームを作成するにはどうしたらよいか?

1. ベクトルを「 data.frame 」に入れる2. Excel や CSV 、 TSV 、インターネットからインポートする

Page 15: Tokyo r28 1

ベクトルを使ったデータフレーム作成ベクトルからデータフレームを作成する

col1 <- c(1:10) #1~10col2 <- sample(100 , 10) #100 の中から 10 選ぶcol3 <- col3 <- c('a' ,'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' , 'i' , 'j') # アルファベットを 10

samp_df <- data.frame(col1 , col2 , col3)# 上記ベクトルを DataFrame へ変換

Page 16: Tokyo r28 1

ベクトルを使ったデータフレーム作成ベクトルからデータフレームを作成する

col1 <- c(1:10) #1~10col2 <- sample(100 , 10) #100 の中から 10 選ぶcol3 <- c(‘a’ ,‘b’ , ‘c’ , ‘d’ , ‘e’ , ‘f’ , ‘g’ , ‘h’ , ‘i’ , ‘j’) # アルファベットを 10

Page 17: Tokyo r28 1

ベクトルを使ったデータフレーム作成Excel や CSV 、 TSV 、インターネットからインポートする

file <- http://www.geocities.jp/ados/exam_results.csv# ネット上にあるデータファイルパス

dt <- read.csv(file , header = TRUE , sep = ",")# read.csv ファイルで dt に取り込み

# もちろんローカルファイルパスでも取り込み可能

Page 18: Tokyo r28 1

ベクトルを使ったデータフレーム作成Excel や CSV 、 TSV 、インターネットからインポートする

Page 19: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 20: Tokyo r28 1

データフレームへのアクセス方法ベクトルへのアクセスと同じようにデータフレームへのアクセスが可能。

この列のデータを取り出したい

dt$national_languageまたはdt[,4]

Page 21: Tokyo r28 1

データフレームへのアクセス方法ベクトルへのアクセスと同じようにデータフレームへのアクセスが可能。

※ ベクトル形式で結果を返します

Page 22: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 23: Tokyo r28 1

行・列の追加データフレームを扱ってると、データを追加したり、列を追加したりしたいケースがある

rbind() # 行の追加cbind() # 列の追加を使うといい Yo !

Page 24: Tokyo r28 1

行・列の追加行を追加したい場合

col1 <- c(11:20) #1~10col2 <- sample(100 , 10) #100 の中から 10選ぶcol3 <- c('k' ,'l' , 'm' , 'n' , 'o' , 'p' , 'q' , 'r' , 's' , 't')

# アルファベットを 10

samp_df1 <- data.frame(col1 , col2 , col3)

# 上記ベクトルを DataFrame へ変換

rbind(samp_df , samp_df1) # 行を追加

Page 25: Tokyo r28 1

行・列の追加行を追加したい場合

rbind(samp_df , samp_df1) # 行を追加

追加されている!

Page 26: Tokyo r28 1

行・列の追加列を追加したい場合

col4 <- sample(200 , 10) # 新しく列を追加したい

cbind(samp_df , col4) # 既存データフレームに追加

Page 27: Tokyo r28 1

行・列の追加列を追加したい場合

追加されている!

cbind(samp_df , col4)

# 既存データフレームに追加

Page 28: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 29: Tokyo r28 1

二つのデータフレームの結合二つのデータセットで共通の「キー」がある場合例)生徒番号と国語、生徒番号と数学のデータフレームがある場合など

student_no <- 1:10 # 生徒番号national_lang <- sample(100 , 10) # 国語成績nl_df <- data.frame(student_no , national_lang)

# データフレーム作成

student_no <- 1:10# 生徒番号

math <- sample(100 , 10)# 数学成績

math_df <- data.frame(student_no , math)

# データフレーム作成

Page 30: Tokyo r28 1

二つのデータフレームの結合二つのデータセットで共通の「キー」がある場合例)生徒番号と国語、生徒番号と数学のデータフレームがある場合など

merge(x , y , by = key)

Page 31: Tokyo r28 1

二つのデータフレームの結合二つのデータセットで共通の「キー」がある場合例)生徒番号と国語、生徒番号と数学のデータフレームがある場合など

追加されている!

student_no <- 1:10 # 生徒番号national_lang <- sample(100 , 10) # 国語成績nl_df <- data.frame(student_no , national_lang)

# データフレーム作成

student_no <- 1:10 # 生徒番号math <- sample(100 , 10) # 数学成績math_df <- data.frame(student_no , math)

# データフレーム作成

merge(nl_df , math_df , by = "student_no")#Merge 関数を使って合成

Page 32: Tokyo r28 1

二つのデータフレームの結合二つのデータセットで共通のキーがあるが、片方のデータがない場合例) @teramonagi さんがおやすみだったので、数学の試験は受けていません

merge(x , y , by = key , all.x = TRUE)#x を優先させたい場合

merge(x , y , by = key , all.y = TRUE)#y を優先させたい場合

Page 33: Tokyo r28 1

二つのデータフレームの結合二つのデータセットで共通のキーがあるが、片方のデータがない場合例) @teramonagi さんがおやすみだったので、数学の試験は受けていません

数学のデータがでていませんね!

student_no <- 1:9 # 生徒番号math <- sample(100 , 9) # 数学成績math_lack_df <- data.frame(student_no , math)

# 欠けたデータフレーム作成

merge(nl_df , math_lack_df , by = "student_no" , all.x = TRUE)

Page 34: Tokyo r28 1

目次

1. 自己紹介2. 前回のおさらい3. データフレームって?4. データフレームの作成方法5. データフレームの行・列へのアクセス6. 列・行の追加7. 2つのデータフレームの結合8. まとめ

※ スクリーンショットや機能等は Mac 版となります。

Page 35: Tokyo r28 1

まとめ1. データフレームはベクトルや他のデータ (CSV,Excel とか)

からつくれるよ

2. データフレームへのアクセスは、「 dataframe$col_name 」や「 dataframe[row,col] 」の記述でもアクセスできるよ

3. データフレームへの行・列の追加は「 rbind() ,cbind() 」関数でできるよ

4. 2 つのデータフレームの結合(共通部分のみ)は「 merge() 」関数でできるよ

5. 片方がかけてるけど、もう片方のデータを使って全部出したい場合は「 merge(x , y , by = key , all.x = ,all.y = ) 」でできるよ

Page 36: Tokyo r28 1

ONE MORE   THING…

Q :これまで R 上で作ったオブジェクトが、データフレームかどうかどうやって確認するの?

A : is.data.fame(object 名 ) 関数で確認してください

データフレームであれば 「 TRUE 」データフレームでなければ 「 FALSE 」を返します。

Page 37: Tokyo r28 1

ご清聴ありがとうございましたm(___)m