【发布时间】:2016-11-21 21:25:56
【问题描述】:
我需要在两个现有数据帧中创建一个新数据帧,其中新数据帧是第一个数据帧中不在第二个数据帧中的每一行。我使用允许我这样做的合并功能找到了一些代码here。基本上,如果生成的合并有结果,那么该行就在数据框中,我不会将它添加到我的新行中:
for (j in 1:nrow(my.df)) {
if(nrow(merge(my.df[j,],sample.df))==0) {
test.df <- rbind(test.df,my.df[j,])
}
}
问题在于 for 循环非常慢。考虑到我的限制,有没有更有效的方法来构建数据框?
my.df
A B class
1 2 x
2 3 y
3 4 z
sample.df
A B class
1 2 x
test.df 应该是这样的
A B class
2 3 y
3 4 z
【问题讨论】:
-
查看
?dplyr::setdiff()和?dplyr::anti_join()以获得更多帮助,请发布具有理想输出的可重现示例:) -
代码是可重现的,您只需要两个数据框,您将获得我正在寻找的所需输出(代码按原样工作)。我只是在寻找一种更快的方法。
-
my.df看起来像什么?sample.df怎么样? -
我已经包含了一个数据框的示例