【发布时间】:2016-05-11 19:41:12
【问题描述】:
我想有效地将两个数据框的条目相加,尽管不能保证数据框具有相同的维度或列名。合并并不是我真正想要的。相反,我想创建一个输出对象,其中包含属于任一添加的数据框的所有行名和列名。在该输出的每个位置,我想对计算值使用以下逻辑:
- 如果行/列配对属于两个输入数据帧,我希望输出包含它们的总和
- 如果一对行/列只属于一个输入数据框,我想在输出中包含该值
- 如果行/列配对不属于任何输入矩阵,我希望在输出中的该位置具有 0。
例如,考虑以下输入数据帧:
df1 = data.frame(x = c(1,2,3), y = c(4,5,6))
rownames(df1) = c("a", "b", "c")
df2 = data.frame(x = c(7,8), z = c(9,10), w = c(2, 3))
rownames(df2) = c("a", "d")
> df1
x y
a 1 4
b 2 5
c 3 6
> df2
x z w
a 7 9 2
d 8 10 3
我希望最终结果是
> df2
x y z w
a 8 4 9 2
b 2 5 0 0
c 3 6 0 0
d 8 0 10 3
到目前为止我做了什么 -
dplyr 中的bind_rows / bind_cols 可以抛出以下内容: “错误:行数不兼容(3,预期为 2)”
我有重复的列名,所以“合并”也不适用于我的目的 - 由于某种原因返回一个空的 df。
【问题讨论】: