У меня есть набор данных с идентификаторами, начальной датой, конечной датой, статусом активности.Текущий набор данных насчитывает 150 000 строк и 50 000 идентификаторов, но будет намного больше.
Я бы хотел, чтобы R перегруппировалась в одну и ту же строку для одного и того же идентификатора и тех же периодов (даты начала и окончания), разныхдействия, происходящие в перекрывающийся период.
Другими словами, я пытаюсь: 1) изменить форму данных, чтобы получить перекрывающиеся и непересекающиеся периоды в определенных строках.2) склеивание перекрывающегося статуса активности.
Я уже пробовал:
Найти перекрывающиеся даты для каждого идентификатора и создать новую строку для перекрытия
и
Преобразование данных перекрывающихся временных диапазонов в данные различных временных диапазонов
Оба эти решения очень хороши и очень мне помогли.
Однако эти два подхода не могут обрабатывать в один кусок весь набор данных из 150 000 строк.Я использовал второе решение, разделив мой набор данных.Мне понадобилось 2 часа, чтобы проанализировать 18 000 строк.
Интересно, может ли какое-нибудь решение быть более эффективным на R. Я думал об использовании mutate, но я не очень знаком с этой функцией.
Входные данные выглядят так:
ID START END STATUS
5c0e83 2013-11-01 2015-01-01 P1
5c0e83 2002-09-01 2003-09-01 F2
5c0e83 2016-09-01 2016-09-01 F0
5c0e83 2006-01-01 2007-01-01 P3
5c0e83 2003-11-01 2013-11-01 P2
5c0e83 2015-09-01 2018-01-01 P0
5c0e83 2003-09-01 2005-09-01 F1
Благодаря ранее процитированному сценарию выходные данные были такими ( Преобразование данных перекрывающихся временных диапазонов в данные различных временных диапазонов )
ID STATUS START END
5c0e83 F3 2002-09-01 2002-09-01
5c0e83 F3 2002-09-01 2002-10-01
5c0e83 F3 2002-10-01 2002-10-01
5c0e83 F3 2002-10-01 2002-11-01
5c0e83 F3 2002-11-01 2002-11-01
5c0e83 F3 2002-11-01 2003-01-01
5c0e83 F3 2003-01-01 2003-01-01
5c0e83 F3 2003-01-01 2003-09-01
5c0e83 F3, F2 2003-09-01 2003-09-01
5c0e83 F2 2003-09-01 2003-10-01
5c0e83 F2 2003-10-01 2003-10-01
5c0e83 F2 2003-10-01 2003-11-01
5c0e83 F2, P2 2003-11-01 2003-11-01
5c0e83 F2, P2 2003-11-01 2004-01-01
5c0e83 F2, P2 2004-01-01 2004-01-01
5c0e83 F2, P2 2004-01-01 2004-09-01
5c0e83 F2, P2 2004-09-01 2004-09-01
5c0e83 F2, P2 2004-09-01 2004-10-01
5c0e83 F2, P2 2004-10-01 2004-10-01
5c0e83 F2, P2 2004-10-01 2004-11-01
Результат хорошийно время для лечения очень долго.Интересно, думает ли кто-нибудь о более эффективном способе выполнения этой задачи.
Спасибо за вашу помощь