У меня есть большая таблица (40 млн. Х 16 столбцов), и я хочу рассчитать совокупное количество людей в группе (ID) до даты каждой строки. Я должен быть решением для data.table, мой опыт показывает, что все остальное слишком медленно, учитывая размер данных.
Мои данные:
names = c("Anna", "Anna", "Hans", "Karl", "Karl", "Maria", "Sara", "Sara")
ID = c("A", "A", "A", "A", "A", "B", "B", "B")
timestamp = c("2019-11-01", "2019-12-01", "2019-12-20", "2020-01-01", "2020-02-04", "2019-12-01", "2020-01-01", "2020-02-04")
df = cbind(timestamp, ID, names) %>%
as.data.table
Результат, который я ищу:
cum_count = c(1,1,2,3,3,1,2,2)
Моя попытка, которая не работает:
df[, `:=` (cum_count = cumsum(names) - 1), by = ID]