添加来自不同 data.frame 的缺失列,填充为 0

Hen*_*ski 1 r dataframe dplyr

我有以下情况:

df1
a b c d
1 2 3 4

df2
a c
5 6
Run Code Online (Sandbox Code Playgroud)

我想要的结果是,用 df1 中缺失的列填充第二个 data.frame 并用零填充它们。所以结果应该是:

df3
a b c d
5 0 6 0
Run Code Online (Sandbox Code Playgroud)

数据框非常大,这就是为什么自动执行此操作的方法会很受欢迎。

Ron*_*hah 5

我们可以setdiff用来找出不存在的列df2并将值 0 分配给这些列。

df2[setdiff(names(df1), names(df2))] <- 0

#  a c b d
#1 5 6 0 0
Run Code Online (Sandbox Code Playgroud)

如果我们想保持与 中相同的列顺序,df1我们可以稍后做

df2[names(df1)]
#  a b c d
#1 5 0 6 0
Run Code Online (Sandbox Code Playgroud)