【发布时间】:2020-03-03 10:58:59
【问题描述】:
我有两个数据框,df1 和 df2,它们需要以这样一种方式连接(合并),即一个 df 中的 NA 被第二个 df 中的值替换,该值基于一些关键列以及发现冲突的地方,它在生成的 df 中报告。例如,
> df1 <- data.frame(c1=c("a","b","c"),c2=c(1,2,3),c3=c("m",NA,"k"),c4=c(1,2,NA),c5=c("z1","z2","z3"))
> df2 <- data.frame(c1=c("d","b","c"),c2=c(1,2,3),c3=c("m","j","p"),c4=c(1,NA,8),c5=c("k1","k2","k3"))
> df1
---
c1 c2 c3 c4 c5
a 1 m 1 z1
b 2 NA 2 z2
c 3 k NA z3
> df2
----
c1 c2 c3 c4 c5
d 1 m 1 k1
b 2 j NA k2
c 3 p 8 k3
我可以使用 rqdatatable 库中的 natural_join 函数来合并两个数据帧,以便一个 df 中的 NA 被另一个 df 中的值替换。但是我想报告冲突,即对于一个密钥对值,如果报告了多个冲突值,那么这应该是我生成的数据帧的一部分。理想情况下,我生成的数据框如下所示:
c1 c2 c3 c4 c5 conflicts_cols
a 1 m 1 k1;z1 c5
b 2 j 2 k2;z2 c5
c 3 k;p 8 k3;z3 c3, c5
d 1 m 1 k1 NA
有人可以帮忙吗?谢谢!
【问题讨论】: