我觉得这可能是个常见的问题,但到目前为止我还没有找到答案。我有两个数据集,一个“标准”和一个“参考”数据集。实际上,标准数据集中的列用于合并来自引用数据集的许多列,在这里模拟为"xtracols“。我需要做的一件事是知道为什么合并失败,如果发生这种情况。例如,如果我有两个数据文件:
df <- data.frame(
id = c(1,2,3),
batch = c(40,45,42),
dil = c(100, 1000, 2000)
)
refdf <- data.frame(
id = c(rep(1, 5), rep(2, 5), rep(3, 5)),
batch = c(rep(40, 5), rep(41, 5), rep(42, 5)),
dil = rep(c(1, 10, 100, 1000, 10000), 3),
xtrcols = rep(c("a", "b", "c"), 5)
)我就这样合并:
merged <- merge(df, refdf, by = c("id", "batch", "dil"), all.x = TRUE)我需要知道某个给定" id“的合并是否因为批处理不正确而失败,例如id = 2的情况,或者合并失败是因为refdf中不存在"dil”的值,就像id= 3的情况一样。我尝试了几种迭代数据和使用match()的方法,但是到目前为止还没有像预期的那样真正起作用。
这将是我运行上述代码的预期结果。对于ids 2和3,合并失败,但原因不同。我试图找到一种方法来知道合并失败的两个原因中的哪一个,这样我就可以在此基础上返回一条特定的错误消息。

任何洞察力都将不胜感激。
发布于 2022-02-11 18:21:20
更改数据后的更新:使用更改的dataframes:anti_join将帮助:
anti_join(df, refdf, by=c("id", "batch", "dil")) id batch dil
1 2 45 1000
2 3 42 2000第一个答案:我们可以使用anti_join:anti_join()返回x中的所有行,而在y中没有匹配。
library(dplyr)
anti_join(df, refdf, by=c("id", "batch")) id batch dil
1 2 45 1000https://stackoverflow.com/questions/71084759
复制相似问题