Я пытаюсь получить последовательные подсчеты из столбца Noshow, сгруппированных по столбцу PatientID. Следующий код, который я использую, очень близок к результатам, которые я хочу достичь. Однако использование функции sum возвращает сумму всей группы. Я хотел бы, чтобы функция sum только суммировала текущую строку и только строки с надписью «1». В принципе, я пытаюсь подсчитать последовательное количество раз, когда пациент ловит их назначение на каждую строку, а затем сбрасывается на 0, когда они показывают. Похоже, что нужно лишь внести некоторые изменения в мой код ниже. Тем не менее, я не могу найти ответ нигде на этом сайте.Как выполнить последовательные графы столбца по группам условно на другой столбец
transform(df, ConsecNoshows = ifelse(Noshow == 0, 0, ave(Noshow, PatientID, FUN = sum)))
Приведенный выше код производит ниже выход:
#Source: local data frame [12 x 3]
#Groups: ID [2]
#
# PatientID Noshow ConsecNoshows
# <int> <int> <int>
#1 1 0 0
#2 1 1 4
#3 1 0 0
#4 1 1 4
#5 1 1 4
#6 1 1 4
#7 2 0 0
#8 2 0 0
#9 2 1 3
#10 2 1 3
#11 2 0 0
#12 2 1 3
Это то, что Я желаю:
#Source: local data frame [12 x 3]
#Groups: ID [2]
#
# PatientID Noshow ConsecNoshows
# <int> <int> <int>
#1 1 0 0
#2 1 1 0
#3 1 0 1
#4 1 1 0
#5 1 1 1
#6 1 1 2
#7 2 0 0
#8 2 0 0
#9 2 1 0
#10 2 1 1
#11 2 0 2
#12 2 1 0
[ОБНОВЛЕНИЕ] Я хотел бы последовательное количество будет компенсирована одной строки вниз.
Благодарим за помощь, которую вы можете предложить заранее!
Хотелось бы проверить все ваши решения так, как они были предоставлены в точности так, как я хотел. Большое спасибо за вашу помощь! –