Tokyo r28 1

Preview:

DESCRIPTION

TokyoR 28回 修正版

Citation preview

初心者セッション 1

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

TOKYO.R #28

目次

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

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

目次

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

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

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

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

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

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

自己紹介

目次

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

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

前回のおさらい

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

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

種類が増えた

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

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

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

目次

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

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

データフレームとは…

これ(表)のこと

データフレームとは…

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

そう、イメージは

で OK !

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

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

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

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

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

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

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

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

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

そう、イメージは

で OK !

目次

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

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

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

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

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

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 へ変換

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

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

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

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

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

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

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

目次

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

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

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

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

dt$national_languageまたはdt[,4]

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

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

目次

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

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

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

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

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

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) # 行を追加

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

rbind(samp_df , samp_df1) # 行を追加

追加されている!

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

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

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

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

追加されている!

cbind(samp_df , col4)

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

目次

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

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

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

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(x , y , by = key)

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

追加されている!

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 関数を使って合成

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

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

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

二つのデータフレームの結合二つのデータセットで共通のキーがあるが、片方のデータがない場合例) @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)

目次

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

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

まとめ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 = ) 」でできるよ

ONE MORE   THING…

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

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

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

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

Recommended