【发布时间】:2015-09-08 13:11:33
【问题描述】:
所以我有一个事件的 ID,我想使用 group_by (或一些类似的函数)来做一个条件累积和。这是数据:
ID Event
42 NA
42 1
42 2
42 NA
42 1
43 NA
43 1
43 2
43 2
而我想要做的是有两个新列,它们累计计算 1 和 2,而不会折叠任何数据:
ID Event count_1s count_2s
42 NA 0 0
42 1 1 0
42 2 1 1
42 NA 1 1
42 1 2 1
43 NA 0 0
43 1 1 0
43 2 1 1
43 2 1 2
所以我了解如何使用 group_by 按 ID 对它们进行汇总,如下所示:
t <- data %>% group_by(ID, Event) %>% summarize(count_1s = sum(!is.na(Event == 1)))
但我无法理解的是如何获得运行条件总和 - 似乎 group_by 会折叠我的数据,我需要维护每一行。
编辑:所以接受的答案完美无缺,但只是一个问题。如果值不同怎么办?例如:
ID Event count_a count_b
42 NA 0 0
42 1 1 0
42 2 1 1
42 NA 1 1
42 1 2 1
43 NA 0 0
43 3 1 0
43 4 1 1
43 4 1 2
每个 ID 总是只有两个事件值(哪个是 a 哪个是 b 无关紧要),我希望它们每次都重置。
【问题讨论】:
标签: r conditional cumulative-sum