だから私は、行が同一row.namesのために追加された2つのデータフレームを、追加する方法:インデックス
x = data.frame(x = 1:10, y = 10:1); y = x
rownames(y) = as.numeric(rownames(x)) + 5
x + y #WRONG, rows should be offset by '5', producing a data.frame that has 15 rows.
でき、おそらくそれは追加することによって、ddply使用して行います
x$id = as.numeric(rownames(x))
y$id = as.numeric(rownames(y))
plyr::ddply(rbind(x,y),'id',function(x){
colSums(x[,c('x','y')])
})[,-1]
ターゲット結果:上記で
x y
1 1 10
2 2 9
3 3 8
4 4 7
5 5 6
6 7 15
7 9 13
8 11 11
9 13 9
10 15 7
11 6 5
12 7 4
13 8 3
14 9 2
15 10 1
、行6(また、私が望む結果を示している)、このようなインデックス列、 :10は、インデックス列と交差する2つのデータフレームの交点の合計です。
これは 'add'よりも' join'のようです。多くの計算を行うために行名に頼らないことを強くお勧めします。いくつかのパッケージ(例えば、 'dplyr')は、それを無視する/削除します。あなたはインデックスとして行の名前を使用しているようですので、明示的に '$ id'のような列を追加しないでください。その場合、 'x $ id < - 1:10;などのような多くの結合技術の1つを使うことができます。 y $ id < - 6:15; dplyr :: bind_rows(x、dplyr :: anti_join(y、x、by = "id")) '。 – r2evans
これは、 'merge(x、y、by = 0、all = TRUE)'のようなmergeを使って扱いやすくなります。 –
人々はあなたが望むものを推測しましたが、間違いなく追加しています。質問をより明確にすることを検討してください。そのまま閉じるように投票する。 – marbel