初心者セッション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版となります。
前回のおさらい
                                                1. 主催者里さんの初めてのお休みした会
                                                2. 懇親会用のお酒が小型化&
                                                   種類が増えた
                                                1.   Rってなに?
                                                2.   Rのインストール
                                                3.   データ解析の流れ
                                                      • 変数への代入/計算の仕方
                                                      • 配列
                                                      • データへのアクセスの仕方
                                                      • 関数の使い方
http://www.slideshare.net/akiaki5516/10rver21
                                                      • データ(CSV)インポート
                                                4.   自作関数
                                                5.   パッケージをつかったレポーティング
目次

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~10
col2 <- 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~10
          col2 <- 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~10
col2 <- 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()」関数で
   できるよ

1. 片方がかけてるけど、もう片方のデータを使って全部出したい場合は
 「merge(x , y , by = key , all.x = ,all.y = )」でできるよ
ONE MORE THING…
Q:これまでR上で作ったオブジェクトが、デー
タフレームかどうかどうやって確認するの?


A:is.data.fame(object名)関数で確認してくだ
さい
  データフレームであれば 「TRUE」
  データフレームでなければ 「FALSE」
  を返します。
ご清聴ありがとうございました
     m(___)m

Tokyo r28 1