我有几个数据框需要合并到一个数据框中以统治它们。主数据框最终会有数千列。所有数据框都有一个要加入的ID列。一个问题是数据帧中有数百列重复。另一个问题是少数这些列包含不一致的值。
我希望找到一种方法是否有任何可以帮助自动化的软件包?或者我会被困在编写大量代码/手动检查数据?
答案 0 :(得分:0)
我编写了safejoin软件包,它非常简洁地解决了这个问题:
#devtools::install_github("moodymudskipper/safejoin")
library(safejoin)
请参阅以下数据帧,A两者相同,B在df1
和df2
中不同,
C
和D
仅在一个数据帧中
df1 <- data.frame(id = 1:2, A = 3:4, B= 5:6, C = 7:8)
df2 <- data.frame(id = 1:2, A = 3:4, B= 9:10, D = 11:12)
library(tidyverse)
safe_full_join(df1, df2, by = "id", conflict = ~ if(identical(.x, .y)) .x else
map2( .x, .y,~tibble(df1=.x,df2=.y))) %>%
unnest(.sep="_")
# id A C D B_df1 B_df2
# 1 1 3 7 11 5 9
# 2 2 4 8 12 6 10L