データの列を並べ替えてから、rbind()したいんだけど…ときかれて、そのまま「列を入れ替えて、rbind()すればいいのでは」、、、と答えにならない答えをしてしまったんですが、実は列名が過不足なく同じならrbind()するだけで良かったんですね!知らなかったよー。
x <- data.frame(site=1:3, class=letters[1:3])
y <- data.frame(class=letters[1:3], site=4:6)
上記のx, yは同じsite列, class列を持っている。でも、順番が違う。順番並べ替えなくてもrbind()出来るのだ!
> x
site class
1 1 a
2 2 b
3 3 c
> y
class site
1 a 4
2 b 5
3 c 6
> rbind(x,y)
site class
1 1 a
2 2 b
3 3 c
4 4 a
5 5 b
6 6 c
x,yの順番逆にすると今度はyが基準になって列の順番が決まる!
> rbind(y,x)
class site
1 a 4
2 b 5
3 c 6
4 a 1
5 b 2
6 c 3
でも、これだと、どこまでがxのデータでどこからがyのデータか分からなくなるので、↓みたいにすれば行にデータ名を入れられる。
> rbind(x=x,y=y)
site class
x.1 1 a
x.2 2 b
x.3 3 c
y.1 4 a
y.2 5 b
y.3 6 c
スマートじゃないけど…、x,yの中にdata列なんか作っておいても良い。
x <- data.frame(site=1:3, class=letters[1:3], data="x")
y <- data.frame(class=letters[1:3], site=4:6, data="y")
> rbind(x,y)
site class data
1 1 a x
2 2 b x
3 3 c x
4 4 a y
5 5 b y
6 6 c y
rbind()こんなに便利だったとはー!