给定large data.table,使用二进制搜索根据前两列查找正确的行,然后将1添加到第三列

给定large data.table,使用二进制搜索根据前两列查找正确的行,然后将1添加到第三列,r,R,我有一个3列的数据框。前两列是引用同一项的ID(ID1和ID2),第三列是具有这两个ID的项出现的次数计数。dataframe有许多行,因此我想使用二进制搜索首先找到两个ID匹配的适当行,然后将1添加到该行中count列下的单元格中 我使用了which()函数来查找正确行的索引,然后使用索引将1添加到count列 例如: index <- which(DF$ID1 == x & DF$ID1 == y) DF$Count[index] <- DF$Count[index]

我有一个3列的数据框。前两列是引用同一项的ID(ID1和ID2),第三列是具有这两个ID的项出现的次数计数。dataframe有许多行,因此我想使用二进制搜索首先找到两个ID匹配的适当行,然后将1添加到该行中count列下的单元格中

我使用了
which()
函数来查找正确行的索引,然后使用索引将1添加到count列

例如:

index <- which(DF$ID1 == x & DF$ID1 == y)

DF$Count[index] <- DF$Count[index] + 1

索引实际上,您可以使用
数据表
设置键
(不是
设置键
,因为您需要两列作为索引)

库(data.table)

DF可能是您需要提供的示例和预期输出
library(data.table)

DF <- data.frame(ID1=sample(1:100,100000,replace=TRUE),ID2=sample(1:100,100000,replace=TRUE))
# convert DF to a data.table
DF <- as.data.table(DF)
# put both ID1 and ID2 as indexes, in that order
setkeyv(DF,c("ID1","ID2"))
# random x and y values
x <- 10
y <- 18
# select value for ID1=x and ID2=y and add 1 in the Count column
DF[.(x,y),"Count"] <-  DF[,.(x,y),"Count"]+1