如何在R/Dplyr中按组捕获唯一项的运行累积计数?

如何在R/Dplyr中按组捕获唯一项的运行累积计数?,r,dplyr,R,Dplyr,我有一个数据框,显示一个月内每个日历日的唯一“person.id”。我正在尝试按日历日获取唯一ID的累计计数。例如,附加图像的正确输出为: 日历日1-4(A、B、C、D) 日历日1:2--6(A、B、C、D、E、F) 日历日1:3--10(A,B,C,D,E,F,G,H,I,J) 完整的数据集是按月分组的,因此理想情况下,累积唯一计数输出绑定到一个组(换句话说,当日历日变回1时,累积计数重置) 我试着用n_distinct(person.id)进行总结,但我不知道如何获得第1天的累积值:n 注意

我有一个数据框,显示一个月内每个日历日的唯一“person.id”。我正在尝试按日历日获取唯一ID的累计计数。例如,附加图像的正确输出为:

日历日1-4(A、B、C、D)

日历日1:2--6(A、B、C、D、E、F)

日历日1:3--10(A,B,C,D,E,F,G,H,I,J)

完整的数据集是按月分组的,因此理想情况下,累积唯一计数输出绑定到一个组(换句话说,当日历日变回1时,累积计数重置)

我试着用n_distinct(person.id)进行总结,但我不知道如何获得第1天的累积值:n

注意:我熟悉dplyr,但不太了解data.table,如果可能的话,我希望能有一些在dplyr中执行的想法

谢谢


我相信这就是你想要的

df <- data.frame(person_id = c('A','B','C','D','A','B','D','E','F','D','G','H','I','J'),
             calendar_day = c(1,1,1,1,2,2,2,2,2,3,3,3,3,3),
             month = c('1/31/17'))

numvals <- cummax(as.numeric(factor(df$person_id)))
aggregate(numvals, list(month = df$month, calendar_day=df$calendar_day), max)
df