【发布时间】:2023-03-17 16:25:01
【问题描述】:
我有 3 个表,想逐个比较,然后找出缺少的元素。
我的桌子是:
> BaseIda
Id Quant
1 1 a
2 2 b
3 3 c
4 4 d
5 5 e
6 6 f
7 7 g
> IdaEmpA
RespA QuantA
1 1 11
2 2 13
3 3 15
4 4 3
5 5 18
6 6 1
7 7 1
> IdaEmpB
RespB QuantB
1 1 18
2 2 14
3 3 21
4 4 2
5 6 13
6 7 3
我需要将 BaseIda$Id 与 IdaEmpA$RespA 和 IdaEmpB$RespB 进行比较,然后指出缺少哪个值,因为 BaseIda$Id 始终具有所有值。 我发现下面的帖子很有用,但无法让它给出我的答案:Compare two data.frames to find the rows in data.frame 1 that are not present in data.frame 2
我试过了:
comparacaoA <- compare(BaseIda$Id,IdaEmpA$RespA)
comparacaoB <- compare(BaseIda$Id,IdaEmpA$RespB)
我没有使用 allowAll=TRUE,因为我认为阅读帮助文件没有必要。
我得到了这个结果:
> comparacaoA
TRUE
> comparacaoB
FALSE
这是正确的,因为 IdaEmpA$RespA 包含所有数据,而 IdaEmpB$RespB 缺少值 5。
但是当我尝试查看哪些值是正确的时,我得到了这个:
> comparacaoA$tM
[1] 1 2 3 4 5 6 7
> comparacaoB$tM
[1] 1 2 3 4 5 6 7
我认为可能是因为我没有使用 allowAll=TRUE,所以我再次尝试,使用它,得到了这个:
comparacaoA <- compare(BaseIda$Id,IdaEmpA$RespA,allowAll=TRUE)
comparacaoB <- compare(BaseIda$Id,IdaEmpA$RespB,allowAll=TRUE)
> comparacaoA
TRUE
> comparacaoB
FALSE
coerced from <NULL> to <integer>
shortened model
sorted
> comparacaoA$tM
[1] 1 2 3 4 5 6 7
> comparacaoB$tM
[1] 1
预期回报应该是:
> comparacaoA$tM
[1] 1 2 3 4 5 6 7
> comparacaoB$tM
[1] 1 2 3 4 6 7
有人可以帮助我了解我缺少什么吗?我做错了什么?
【问题讨论】:
-
您的代码中有错误,这就是您没有得到正确答案的原因。看我的回答。
-
是的,我看到了,非常感谢。
标签: r