首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查不同数据集中多列之间的差异(在R中)?

如何检查不同数据集中多列之间的差异(在R中)?
EN

Stack Overflow用户
提问于 2022-02-11 18:16:15
回答 1查看 21关注 0票数 0

我觉得这可能是个常见的问题,但到目前为止我还没有找到答案。我有两个数据集,一个“标准”和一个“参考”数据集。实际上,标准数据集中的列用于合并来自引用数据集的许多列,在这里模拟为"xtracols“。我需要做的一件事是知道为什么合并失败,如果发生这种情况。例如,如果我有两个数据文件:

代码语言:javascript
复制
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)
)

我就这样合并:

代码语言:javascript
复制
merged <- merge(df, refdf, by = c("id", "batch", "dil"), all.x = TRUE)

我需要知道某个给定" id“的合并是否因为批处理不正确而失败,例如id = 2的情况,或者合并失败是因为refdf中不存在"dil”的值,就像id= 3的情况一样。我尝试了几种迭代数据和使用match()的方法,但是到目前为止还没有像预期的那样真正起作用。

这将是我运行上述代码的预期结果。对于ids 2和3,合并失败,但原因不同。我试图找到一种方法来知道合并失败的两个原因中的哪一个,这样我就可以在此基础上返回一条特定的错误消息。

任何洞察力都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2022-02-11 18:21:20

更改数据后的更新:使用更改的dataframes:anti_join将帮助:

代码语言:javascript
复制
anti_join(df, refdf, by=c("id", "batch", "dil"))
代码语言:javascript
复制
  id batch  dil
1  2    45 1000
2  3    42 2000

第一个答案:我们可以使用anti_joinanti_join()返回x中的所有行,而在y中没有匹配。

代码语言:javascript
复制
library(dplyr)

anti_join(df, refdf, by=c("id", "batch"))
代码语言:javascript
复制
  id batch  dil
1  2    45 1000
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71084759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档