如何计算R中data.table中的出现次数组合

如何计算R中data.table中的出现次数组合,r,data.table,summarization,R,Data.table,Summarization,我有两个数据表。我想计算与另一个表中的一个表的组合相匹配的行数。我已经检查了data.table文档,但没有找到答案。我使用的是数据。表1.9.2 DT1 <- data.table(a=c(3,2), b=c(8,3)) DT2 <- data.table(w=c(3,3,3,2,3), x=c(8,8,8,3,7), z=c(2,6,7,2,2)) DT1 # a b # 1: 3 8 # 2: 2 3 DT2 # w x z # 1: 3 8 2 # 2: 3 8

我有两个数据表。我想计算与另一个表中的一个表的组合相匹配的行数。我已经检查了data.table文档,但没有找到答案。我使用的是数据。表1.9.2

DT1 <- data.table(a=c(3,2), b=c(8,3))
DT2 <- data.table(w=c(3,3,3,2,3), x=c(8,8,8,3,7), z=c(2,6,7,2,2))
DT1
#    a b
# 1: 3 8
# 2: 2 3

DT2
#    w x z
# 1: 3 8 2
# 2: 3 8 6
# 3: 3 8 7
# 4: 2 3 2
# 5: 3 7 2
预期结果:

#    a b count_combination_in_dt2
# 1: 3 8                        3 
# 2: 2 3                        1 

您只需添加
by=list(a,b)

编辑:更多详细信息:在原始版本中,您使用了
DT2[DT1,nomatch=0]
(因为您使用了所有
a,b
组合。如果要使用
J(a,b)
对于每个
a、b
组合,您需要分别使用
by
参数。然后将
数据.table
a、b
分组,并在每组中计算
nrow(…)

设置键(DT2,w,x)
setkey(DT2, w, x)

DT2[DT1, .N, by = .EACHI]
#   w x N
#1: 3 8 3
#2: 2 3 1

# In versions <= 1.9.2, use DT2[DT1, .N] instead
DT2[DT1,.N,by=.EACHI] #w x N #1: 3 8 3 #2: 2 3 1
#在版本中,谢谢!可以在DT1中分配结果列吗?我尝试了DT2[DT1,count\u composition\u In_DT2:=.N],但它不起作用。DT1[,count:=DT2[DT1,.N][,N]]起作用,与第一个解决方案相比速度非常快。
DT1[,count_combination_in_dt2:=nrow(DT2[J(a,b),nomatch=0]), by=list(a,b)]
DT1
## 
##    a b count_combination_in_dt2
## 1: 3 8                        3
## 2: 2 3                        1
setkey(DT2, w, x)

DT2[DT1, .N, by = .EACHI]
#   w x N
#1: 3 8 3
#2: 2 3 1

# In versions <= 1.9.2, use DT2[DT1, .N] instead