У меня более 0,5 миллиона счетов. У каждого счета есть заказчик, который должен оплатить его, и дату его создания. Я хочу добавить в эту таблицу столбец с информацией о том, сколько счетов для данного клиента было создано до этого счета. Я создал функцию, которая накладывает фильтр на таблицы, ограничивая его именем клиента и всеми счетами, которые были созданы ранее. Затем он вызывает l oop, который делает это для каждого счета. Второе решение - функция отображения. К сожалению, оба решения слишком медленные.
1)
totalPaidInvoices<-function(customerFun, invoiceDateFun)
{ tempTable <- invoice1 %>%
filter(customerId == customerFun & invoiceDateFun > invoiceDate )
nrow(tempTable) }
for(i in 1:nrow(invoice1))
{ invoice1$noofin[i] <- totalPaidInvoices(invoice1$customerId[i],invoice1$invoiceDate[i])
}
2)
invoice1$TotalPaidInv <- mapply(function(x,y)
(nrow(tempTable <- invoice1 %>%
filter(customerId == x & y > invoiceDate))),invoice1$customerId,invoice1$invoiceDate)
Есть ли способ ускорить этот код?