Я работаю в сфере здравоохранения, и я использую алгоритмы машинного обучения, чтобы разработать модель для прогнозирования, когда пациенты не появятся для своих встреч. Я пытаюсь создать новую функцию, которая станет суммой последних последовательных не-шоу каждого пациента. Я много оглядывался на stackoverflow и другие ресурсы, но не могу найти то, что я ищу. Например, если пациент не показал свои последние два последних назначения, каждый столбец новой функции с ее идентификатором будет заполнен 2-мя. Если она не показала три раза, но показала свое последнее назначение, то новая колонка будет заполнена цифрой 0.Создайте новый столбец с последовательным подсчетом первой серии на основе столбца ID
Я пробовал использовать plyr ddply с cumsum, но это не дало мне результатов, которые я ищу. Я использовал:
ddply(a, .(ID), transform, ConsecutiveNoshows = cumsum(Noshow))
Ниже приведен пример набора данных ('1' не означает не-шоу):
ID Noshow
1 1
1 1
1 0
1 0
1 1
2 0
2 1
2 1
3 1
3 0
3 1
3 1
3 1
Это мой желаемый результат:
ID Noshow ConsecutiveNoshows
1 1 2
1 1 2
1 0 2
1 0 2
1 1 2
2 0 0
2 1 0
2 1 0
3 1 1
3 0 1
3 1 1
3 1 1
3 1 1
Я буду будьте очень благодарны за любую помощь. Спасибо.
Стивен, я применил свое решение для моих гораздо больших наборов данных, и она работала именно так, как задумано. Большое спасибо за то, что вы научили меня мыслительному процессу, который вы использовали для поиска решения. –
@JamesMarquez Рад, что это помогло :) –