如何在另一个中获得一个 data.frame 的相对补码?
How to get relative complement of one data.frame in another?
我有两个 data.frame 对象需要从一个到另一个获取其相对补集。我从这个站点检查了类似的 post,当然有人已经问过,但它是关于矢量的,没关系。但是,我尝试了此站点中现有 post 的解决方案,但没有得到预期的输出。我尝试了几种方法,例如 setdiff、pmatch 反之亦然,但没有一种是 return 我的预期输出。谁能提出有效完成这项任务的可能方法?
例子
foo <- data.frame( start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6))
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))
期望的输出:
根据wiki中的补集理论,我的预期输出如下:
start stop
1 5 7
2 9 11
3 13 15
4 17 19
如何获得一个 data.frame 与另一个相关的互补集?完成这项任务的正确方法是什么?谢谢
试试这个
library(dplyr)
output <- anti_join(foo,bleh)
output[order(output$start),]
使用 dplyr
包中的 setdiff
的另一个选项(@Frank 感谢您的更正)
setdiff(foo,bleh)
# start stop
#1 5 7
#2 9 11
#3 13 15
#4 17 19
我有两个 data.frame 对象需要从一个到另一个获取其相对补集。我从这个站点检查了类似的 post,当然有人已经问过,但它是关于矢量的,没关系。但是,我尝试了此站点中现有 post 的解决方案,但没有得到预期的输出。我尝试了几种方法,例如 setdiff、pmatch 反之亦然,但没有一种是 return 我的预期输出。谁能提出有效完成这项任务的可能方法?
例子
foo <- data.frame( start=seq(1, by=4, len=6), stop=seq(3, by=4, len=6))
bleh <- data.frame(start=seq(1, by=5, len=5), stop=seq(3, by=5, len=5))
期望的输出:
根据wiki中的补集理论,我的预期输出如下:
start stop
1 5 7
2 9 11
3 13 15
4 17 19
如何获得一个 data.frame 与另一个相关的互补集?完成这项任务的正确方法是什么?谢谢
试试这个
library(dplyr)
output <- anti_join(foo,bleh)
output[order(output$start),]
使用 dplyr
包中的 setdiff
的另一个选项(@Frank 感谢您的更正)
setdiff(foo,bleh)
# start stop
#1 5 7
#2 9 11
#3 13 15
#4 17 19