23  データフレーム(データフレームを操作してみよう)(L27)

さて、表に名前をつけて見ましょう。

hyou <- data.frame(number = c(1,2,3,4),
                   name = c("A","B","C","D"))

これで、名前のついた表がRの環境中に読み込まれました。 ここでは、View()と$の使い方を解説いたします。

23.1 View()

まず、View関数です。「v」iewではなくて、「V」iewです。「Vが大文字」です!この関数の中に、hyouを入れて実行すると、

View(hyou) 

こんな感じで作成した表を表示することができます。

23.2 $

ドルサインは、ベクトルを取り出したい時に便利です。

hyou <- data.frame(number = c(1,2,3,4),
                   name = c("Aさん","Bさん","Cさん","Dさん"))

で作った表ですが、nameをベクトルとして取り出したい!となったときには、

hyou$name
[1] "Aさん" "Bさん" "Cさん" "Dさん"

でとりだせます。

hyou$number
[1] 1 2 3 4

とりだせましたね。

ところで、

hyou$name
[1] "Aさん" "Bさん" "Cさん" "Dさん"

に下に、Levelsというのが出てます。

これは、数値型、文字列型に続く型(順番に特に意味はないです)Factor型です。他にも、いくつか型があるのですが、これは、後ほど解説します。

23.3 列の作成、置き換え

hyou$number
[1] 1 2 3 4

でその列のベクトルを取り出せました。 実は、この$記号を利用すれば、新しい変数 を作成することも可能です。

hyou$new_number
NULL

存在していない列を取り出そうとすると、NULLという、「存在していない」ことを表す結果が返ってきます。ここに、

hyou$new_number <- c(100,200,300,400)

取り出すのではなく、代入してあげると、

View(hyou)

代入した結果が表示されました!

このように$記号をデータフレームと合わせて使うと新しい変数を作成することができます。また、すでに「ある」列名を指定して代入することも可能で、

次のコードを実行すると、何が起こるでしょう?

hyou$number <- c(100,200,300,400)
hyou$name <- "いえーい"

hyou
  number     name new_number
1    100 いえーい        100
2    200 いえーい        200
3    300 いえーい        300
4    400 いえーい        400

こんな感じで、すでにある列にベクトルを放り込むことができます。 また、nameの方は、要素の長さ1のベクトルであるにもかかわらず、きちんと代入されています。これは、ベクトルは勝手に複製されるという話がここでも生きています。ただし、

hyou$name <- c("その1","その2")

はOKでも、

hyou$name <- c("その1","その2","その3")
Error in `$<-.data.frame`(`*tmp*`, name, value = c("その1", "その2", : replacement has 3 rows, data has 4

はトータルの行数の整数倍でないため、最初に実験したようにエラーがでます。