从R中的两个表中查找不重叠的值
我有两个表格如下:从R中的两个表中查找不重叠的值,r,data.table,R,Data.table,我有两个表格如下: library(data.table) Input<-data.table("Date"=seq(1:10),"Cycle"=c(90,100,130,180,200,230,250,260,300,NA)) Date Cycle 1: 1 90 2: 2 100 3: 3 130 4: 4 180 5: 5 200 6: 6 230 7: 7 250 8: 8 260
library(data.table)
Input<-data.table("Date"=seq(1:10),"Cycle"=c(90,100,130,180,200,230,250,260,300,NA))
Date Cycle
1: 1 90
2: 2 100
3: 3 130
4: 4 180
5: 5 200
6: 6 230
7: 7 250
8: 8 260
9: 9 300
10: 10 320
FDate<-data.table("Date"=seq(1:9),"Cycle"=c(90,100,130,180,200,230,250,260,300),"Task"=c("D","A","B,C",NA,"A,D","D","C","D","A,C,D"))
Date Cycle Task
1: 1 90 D
2: 2 100 A
3: 3 130 B,C
4: 4 180 <NA>
5: 5 200 A,D
6: 6 230 D
7: 7 250 C
8: 8 260 D
9: 9 300 A,C,D
当我尝试这个setdiff(FDate$Date,Input$Date)
它是这样的
integer(0)
我们可以使用data.table中的fsetdiff
,只包括两个数据集中的公共列
fsetdiff(Input, FDate[ , names(Input), with = FALSE])
# Date Cycle
#1: 10 320
或者像@Frank提到的那样加入
Input[!FDate, on=.(Date)]
# Date Cycle
#1: 10 320
在OP的代码中
setdiff(FDate$Date,Input$Date)
第一个参数来自“FDate”的“Date”列,该列中的所有元素也位于主数据“Input$Date”中。因此,它返回整数(0)
)。如果我们做相反的操作,它将返回10和反连接:Input[!FDate,on=(Date)]
假设“非重叠日期”足够,或者Input[!FDate,on=(Date,Cycle)]
我不知道数据。表可以肯定地说,但似乎与提供了几个选项的数据相关
setdiff(FDate$Date,Input$Date)