我有以下情况:
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)
数据框非常大,这就是为什么自动执行此操作的方法会很受欢迎。
我们可以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)