R言語でデータを縦に結合させる
Rには、rbindという関数があるのだが、データフレームを結合する時に、列が揃っていないと怒られてしまう。
Rでsetにあるように、SASではsetという関数が用意されているが、Rには無いようです。
ここに掲載されているソースコードは、2つのデータフレームを結合させるもので、3つ以上のデータフレームに適用させられないので、それができるものを書いたので、記録しておく。
上で定義されているsetという関数は次のようなものである。
set <- function(x,y) { coln <- unique(c(colnames(x),colnames(y))) x[coln[!coln %in% colnames(x)]] <- NA y[coln[!coln %in% colnames(y)]] <- NA rbind(x,y) }
3つ以上に対応できるように再帰的に呼び出して解決した。
set2 <- function(x,...){ df <- x for(i in list(...)){ df <- set(df,i) } df }
こんな感じに書いたら、望みが叶った。めでたしめでたし