У меня есть файл (десятки столбцов и миллионы строк), которые в основном выглядит следующим образом:смотреть вперед анализ времени в R (алгоритм интеллектуального анализа данных)
customerID VARCHAR(11)
accountID VARCHAR(11)
snapshotDate Date
isOpen Boolean
...
Одна запись в файле может выглядеть следующим образом:
1,100,200901,1,...
1,100,200902,1,...
1,100,200903,1,...
1,100,200904,1,...
1,100,200905,1,...
1,100,200906,1,...
...
1,100,201504,1,...
1,100,201505,1,...
1,100,201506,1,...
Когда учетная запись закрыта, могут произойти две вещи. Как правило, никаких дальнейших снимков для этой записи не существует в данных. Иногда дополнительные записи будут добавляться, но флаг isOpen будет установлен в 0.
Я хочу добавить дополнительный булевский столбец, называемый «closedInYr», который имеет значение 0, ЕСЛИ ЗАКРЫТЬ АККАУНТ В ОДИН ГОД ПОСЛЕ ДАТА СНАБЖЕНИЯ.
Мое решение - медленное и грубое. Он берет каждую запись, отсчитывает вперед в течение 12 месяцев, и если он находит запись с тем же идентификатором клиента, идентификатором учетной записи и isOpen, установленным в 1, он заполняет запись 0 в поле «closedInYr», в противном случае она заполняет поле с 1. Это работает, но производительность неприемлема, и у нас есть несколько таких файлов для обработки.
Любые идеи о том, как реализовать это? Я использую R, но я хочу кодировать Perl, Python или практически все, кроме COBOL или VB.
Благодаря
Воспроизводимый пример улучшит шансы найти решение. –
Python, вероятно, будет вашим лучшим выбором, поскольку я считаю, что он более эффективен, особенно с интеллектуальным анализом данных. Плюс, воспроизводимые данные - плюс. – NealC
Гораздо проще, чем предлагалось, добавить столбец с закрытым годом. Затем вы можете сделать простую последовательность действий для определения ClosedInYr –