У меня есть огромная таблица данных с миллионами строк и десятков столбцов, поэтому производительность для меня является важной проблемой. Данные описывают посещения сайта контента. Я хочу вычислить ContentId самого раннего (т. Е. Минимального времени хита) каждого посещения. То, что я сделал это: dt[,.(FirstContentOfVisit=ContentID[ContentID != ""][which.min(HitTime)]), by=VisitId,.SDcols=c("ContentID","HitTime")]
Как фильтровать столбец на основе условия из другого столбца в R
проблема заключается в том, что я не знаю, если which.min первым вычисляет мин на всем векторе HitTime (который я не хочу!) Или делает это только на фильтрованную HitTime вектор (тот, который соответствует непустому ContentID).
Кроме того, после того, как я вычислил его - как я могу получить минимальное значение HitTime ContentID, отличное от первого (то есть самое раннее время попадания непервого идентификатора содержимого).
Когда я попытался выполнить оба действия с определенными пользователем функциями (сначала - отсортируйте таблицу подданных, а затем извлеките требуемое значение), потребовались возрасты (и на самом деле никогда не останавливались), хотя у меня очень сильная машина (виртуальная) с 180 ГБ оперативной памяти. Поэтому я ищу встроенное решение.