PR

data.frameに新しい列を追加する方法:$演算子、[]角括弧、cbind

R basic
記事内に広告が含まれています。

研究や調査でデータをデータフレームやmatrix(行列)形式で取り込んだ後に、新たに列を追加する機会は多いと思います。そこで今回は、Rプログラミングでデータフレームに新しい列を追加する方法をまとめました。

サンプルデータの作成

まずはベースになるデータフレームを作成します。

今回はx列とy列に数字とアルファベットが入ったデータフレームを作成してみます。

dat <- data.frame(x = 1:10, y = LETTERS[1:10])

dat   
 x y
1  1 A
2  2 B
3  3 C
4  4 D
5  5 E
6  6 F
7  7 G
8  8 H
9  9 I
10 10 J

次に、追加するベクトルを作成します。

今度は、ロジカルな値で作ってみます。

z <- rep(c(T, F), times =5)

z
[1]  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE  TRUE FALSE

※注意:追加するベクトルの行数が追加先の行数と異なっているとエラーになります。

上の例で言えば、datは10列あるのに、追加するベクトルが9行とか11行であったらエラーが出ます。

$演算子で列を追加

まずは「$演算子」を使って列を追加します。$はデータフレームで任意の列を指定する時に使用しますね。

例えば上のデータでx列のみのデータを抽出する場合は、

dat$x

[1]  1  2  3  4  5  6  7  8  9 10

とすれば、x列の値を抽出できます。

同様に、$演算子を使って列を追加するのも簡単です。元データを複製してdat1を作成します。

dat1 <- dat

そして、このdat1にz列を追加します。

dat1$z <- z

dat1
  x y    z
1  1 A  TRUE
2  2 B FALSE
3  3 C  TRUE
4  4 D FALSE
5  5 E  TRUE
6  6 F FALSE
7  7 G  TRUE
8  8 H FALSE
9  9 I  TRUE
10 10 J FALSE

これで、新しいz列が追加されました。

角括弧を使って列を追加

上の例のように$演算子を使ってデータフレームに新しい変数を追加する方法以外にも、角括弧を使用してデータフレームにベクトルを追加する方法があります。こちらもとても簡単ですよ。

先程と同様に、datを複製してdat2とします。

dat2 <- dat

では、角括弧を使って列を追加します。

dat2["Z"] <- z

dat2
    x y    Z
1  1 A  TRUE
2  2 B FALSE
3  3 C  TRUE
4  4 D FALSE
5  5 E  TRUE
6  6 F FALSE
7  7 G  TRUE
8  8 H FALSE
9  9 I  TRUE
10 10 J FALSE

出来上がりです!

cbind関数を使って列を追加

cbindは列(column)を結合する関数です。(※ちなみにrbindという、行(row)を結合する関数もあります。)

このcbind関数を使ってもデータフレームに列を追加することができます。(実質は、datとzを結合する感じですね)

では早速、dat3にdatとzを結合させてみます。

dat3 <- cbind(dat, z)

dat3
  x y    z
1  1 A  TRUE
2  2 B FALSE
3  3 C  TRUE
4  4 D FALSE
5  5 E  TRUE
6  6 F FALSE
7  7 G  TRUE
8  8 H FALSE
9  9 I  TRUE
10 10 J FALSE

cbind関数でも簡単に出来上がりです!

まとめ

今回はデータフレームに新しい列を追加する方法をまとめてみました。研究などで既存のデータフレームに新しく項目を追加することも多いと思いますので、とても便利な機能ですよ。

コメント