У меня есть датафрейм с 3 столбцами. Первые два столбца - это идентификаторы (ID1 и ID2), относящиеся к одному и тому же элементу, а третий столбец - это счетчик количества отображений элементов с этими двумя идентификаторами. В кадре данных много строк, поэтому я хочу использовать двоичный поиск, чтобы сначала найти соответствующую строку, в которой совпадают оба идентификатора, а затем добавить 1 в ячейку под столбцом подсчета в этой строке.
Я использовал функцию which()
, чтобы найти индекс правильной строки, а затем с помощью индекса добавил 1 к столбцу count.
Например:
index <- which(DF$ID1 == x & DF$ID1 == y)
DF$Count[index] <- DF$Count[index] + 1
Пока это работает, функция которого очень неэффективна. Поскольку я должен делать это в цикле for более триллиона раз, это занимает много времени. Кроме того, есть только одна строка во фрейме данных с этой комбинацией идентификаторов. В то время как функция which проходит через все строки, функции, которая останавливается, когда находит правильную строку, должно быть достаточно. Я пытался использовать data.table
и setkey
для этой цели, но не знаю, как реализовать это для моих целей. Заранее спасибо.