研究や調査でデータをデータフレームや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関数でも簡単に出来上がりです!
まとめ
今回はデータフレームに新しい列を追加する方法をまとめてみました。研究などで既存のデータフレームに新しく項目を追加することも多いと思いますので、とても便利な機能ですよ。
コメント