(私は答え全体を編集します)
両方のdfをmerge()
(Andrieのコメントから)とマージすることができます。また、パラメータ?merge
として入力できるすべてのオプションを確認してください。by
0 = row.names
以下のコードは、データフレーム(行と列の数が異なる)の例を示しています。
x = data.frame(a1 = c(1,1,1,1,1), a2 = c(0,1,1,0,0), a3 = c(1,0,2,0,0), row.names = c('y1','y2','y3','y4','y5'))
x1 = data.frame(a4 = c(1,1,1,1), a5 = c(0,1,0,0), row.names = c('y1','y3','y4','y5'))
行名を識別子として使用できる場合は、それらを新しい列として配置して、列ごとにマージします。
x$id <- row.names(x)
x1$id <- row.names(x1)
# merge by column names
merge(x, x1, by = intersect(names(x), names(x1)))
# result
# id a1 a2 a3 a4 a5
# 1 y1 1 0 1 1 0
# 2 y3 1 1 2 1 1
# 3 y4 1 0 0 1 0
# 4 y5 1 0 0 1 0
これで問題が解決することを願っています。
編集:わかりました、今私はばかげています。すべての列の名前が両方のデータフレームで異なる場合は、行名を別の列として入力する必要はありません。使用するだけです:
merge(x,x1, by=0)