r 中的 setdiff 不提取数据子集

setdiff in r is not pulling subset of data

我有两个数据框:raw2 有 28,406 条记录和 raw3 26,421 条记录。

raw3 中的记录是 raw2 中记录的子集。事实上 raw3 是使用以下方法派生的:

raw3<-setDT(raw2)[order(O_ID, Program_forsorting), head(.SD, 1), .(O_ID)]

我现在有一个 setdiff 函数,我正在尝试将未从 raw2 转移到 raw3 的记录使用:

settdiff(raw2,raw3)

结果应该有 1,985 条记录。但是,结果有 28,406,代表 raw2。如果我将公式切换为 settdiff(raw3,raw2),结果将包含 26,421 条记录。

我做错了什么?

这是示例数据

raw2<-as.data.frame(cbind("col1"=c("a","h","b","f","g"),"O_ID"=c(1,1,1,4,5), "Program_forsorting"=c("p1","p2","p2","p3","p1")))

我不相信 setdiff 直接在数据表上工作,因为它需要一个向量作为输入...您必须创建一个函数并应用于所有列。我会尝试使用本机数据表函数 fsetdiff。确保两个对象都是数据表对象。

fsetdiff(raw2,raw3)

有人发布了回复,然后将其删除。但是,它有效,所以我会在这里分享。

如果数据跨越多个列,我应该使用 fsetdiff 函数。

fsettdiff(raw2,raw3)